0Pricing
Python Academy · Lektion

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 mit in prüfen.
  • IntFlag verbindet 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

  1. Die Enum-Klasse
  2. IntEnum und Flag
  3. NamedTuple-Grundlagen
  4. typing.NamedTuple
← Zurück zu Python Academy