IntEnum und Flag
Integer- und Flag-Enums verwenden
IntEnum und Flag ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Über einfache Enums hinaus
Das Modul enum liefert spezialisierte Basisklassen. Mitglieder von IntEnum verhalten sich wie Ganzzahlen, und Mitglieder von Flag können mit bitweisen Operatoren kombiniert werden. Damit lassen sich Fälle abdecken, für die ein einfaches Enum zu unflexibel ist.
Ein einfaches Enum ist kein int
Ein Mitglied eines einfachen Enum ist nicht mit seinem Ganzzahlwert austauschbar. Beim Vergleich mit einer Zahl wird False zurückgegeben.
from enum import Enum
class Level(Enum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)IntEnum wird als int verglichen
Ein Mitglied von IntEnum ist eine Ganzzahl. Daher ist es gleich seinem numerischen Wert und unterstützt auch Ordnungsvergleiche.
from enum import IntEnum
class Level(IntEnum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)
print(Level.LOW < Level.HIGH)IntEnum in Rechenoperationen
Da die Mitglieder echte Ganzzahlen sind, können Sie sie für Berechnungen und als Indizes verwenden. Nutzen Sie dies, wenn ein Wert tatsächlich mit numerischem Code zusammenarbeiten muss.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
print(Priority.HIGH + 1)
print(Priority.MEDIUM * 2)IntEnum-Mitglieder sortieren
Da IntEnum Ordnungsvergleiche unterstützt, wird eine Liste von Mitgliedern ohne zusätzliche Schlüssel-Funktion nach ihrem Wert sortiert.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
for p in sorted([Priority.HIGH, Priority.LOW, Priority.MEDIUM]):
print(p.name)Flag für kombinierbare Optionen
Ein Flag-Enum ist für Werte gedacht, die Sie kombinieren. Weisen Sie Zweierpotenzen zu, damit jedes Mitglied ein eigenes Bit belegt.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
print(Permission.READ)
print(Permission.READ.value)Flags mit | kombinieren
Verwenden Sie den bitweisen OR-Operator |, um Flags zu einem einzelnen zusammengesetzten Wert zu kombinieren.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(access)Mitgliedschaft mit in prüfen
Prüfen Sie mit dem Operator in, ob ein Flag gesetzt ist. Der Operator führt den bitweisen Test für Sie durch.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(Permission.READ in access)
print(Permission.EXECUTE in access)Schnittmenge und Entfernen
Kombinieren Sie Flags mit & (AND), um gemeinsame Bits zu finden, und entfernen Sie ein Flag mit & und dem Komplement ~.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
still = access & ~Permission.WRITE
print(still)IntFlag für ganzzahlige Flags
IntFlag verbindet beide Konzepte: kombinierbare Flags, die sich zugleich wie einfache Ganzzahlen verhalten. Das ist nützlich bei der Anbindung an C-APIs oder bei Bitmasken, die als Zahlen gespeichert werden.
from enum import IntFlag, auto
class Mode(IntFlag):
R = 4
W = 2
X = 1
m = Mode.R | Mode.W
print(int(m))Über ein kombiniertes Flag iterieren
Beim Iterieren über einen kombinierten Flag-Wert wird jedes darin enthaltene einzelne Flag geliefert. Das ist praktisch, um aktive Optionen aufzulisten.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.EXECUTE
for p in access:
print(p.name)Kurzer Test
Warum würden Sie ein Flag-Enum einem einfachen Enum vorziehen?
Zusammenfassung
Sie haben Ganzzahl- und Flag-Enums kennengelernt.
IntEnum-Mitglieder verhalten sich wie Ganzzahlen und unterstützen Ordnungsvergleiche sowie Rechenoperationen.Flag-Mitglieder lassen sich mit|,&und~kombinieren und mitinprüfen.IntFlagverbindet beide Verhaltensweisen.- Verwenden Sie Zweierpotenzen für Flag-Werte.
Häufig gestellte Fragen
Ist die Lektion „IntEnum und Flag“ kostenlos?
Ja — der vollständige Text von „IntEnum und Flag“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „IntEnum und Flag“?
Integer- und Flag-Enums verwenden Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „IntEnum und Flag“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Die Enum-Klasse
- IntEnum und Flag
- NamedTuple-Grundlagen
- typing.NamedTuple