Aufzählungen in Python
Dieser Artikel erklärt Aufzählungen in Python.
YouTube Video
Aufzählungen in Python
Das enum
von Python ist eine spezielle Klasse zur Definition von Konstanten, die die Lesbarkeit verbessert und hilft, Programmierfehler zu vermeiden.
Was ist ein Enum
?
Enum
(kurz für Aufzählung) ist eine Klasse, die verwendet wird, um eine Menge benannter Konstanten zu definieren. Es wird typischerweise verwendet, um zusammenhängende Konstanten zu gruppieren. Beispielsweise eignet es sich zur Darstellung von Farben, Wochentagen oder Richtungen.
Warum Enum
verwenden?
Es gibt mehrere Gründe, Enum
zu verwenden.
- Verbesserte Lesbarkeit: Die Verwendung benannter Konstanten macht den Code intuitiver.
- Vermeidung von Fehlern: Es verhindert Änderungen oder Missbrauch von Konstantenwerten.
- Gruppierung: Es organisiert zusammenhängende Konstanten in einer einzigen Klasse und repräsentiert strukturierte Daten.
Grundlegende Verwendung von Enum
Um enum
zu verwenden, importieren Sie das enum
-Modul und definieren eine Klasse. Die Klasse sollte von Enum
erben und die Werte definieren, die als Konstanten behandelt werden sollen.
Grundlegendes Beispiel für Enum
1from enum import Enum
2
3class Color(Enum):
4 RED = 1
5 GREEN = 2
6 BLUE = 3
7
8# Usage of Enum
9print(Color.RED) # Color.RED
10print(Color.RED.name) # RED
11print(Color.RED.value) # 1
In diesem Beispiel definieren wir eine Enum
-Klasse namens Color
mit drei Werten. Jeder Name kann über das name
-Attribut und der zugehörige Wert über das value
-Attribut abgerufen werden.
Vergleich von Enums
Enum
-Mitglieder können entweder anhand des Namens oder des Werts verglichen werden. Sie können den is
-Operator oder den ==
-Operator verwenden, um Identität und Gleichheit zu überprüfen.
Vergleichsbeispiel
1from enum import Enum
2
3class Direction(Enum):
4 NORTH = 1
5 SOUTH = 2
6 EAST = 3
7 WEST = 4
8
9# Equality comparison
10print(Direction.NORTH == Direction.SOUTH) # False
11print(Direction.NORTH == Direction.NORTH) # True
12
13# Identity comparison using is
14print(Direction.NORTH is Direction.SOUTH) # False
15print(Direction.NORTH is Direction.NORTH) # True
Hier werden Vergleiche von Enum
mit ==
und is
demonstriert. Enum
ist darauf ausgelegt, Objekte mit denselben Namen und Werten korrekt zu vergleichen.
Automatische Wertzuweisung mit auto()
Wenn Sie Enum
-Mitgliedern automatisch Werte zuweisen möchten, können Sie enum.auto()
verwenden. auto()
ermöglicht es Python, automatisch Werte zuzuweisen, wodurch die manuelle Angabe durch Entwickler hinfällig wird.
Beispiel für auto()
1from enum import Enum, auto
2
3class Animal(Enum):
4 DOG = auto()
5 CAT = auto()
6 MOUSE = auto()
7
8# Check the values of Enum
9print(Animal.DOG.value) # 1
10print(Animal.CAT.value) # 2
11print(Animal.MOUSE.value) # 3
In diesem Beispiel entfällt durch die Verwendung von auto()
die Notwendigkeit, Werte explizit anzugeben, was den Code kompakter macht.
Zuweisung mehrerer Werte an Enum
-Mitglieder
Enum
-Mitglieder können auch mehrere Werte enthalten, wie z. B. Tupel. Dies ermöglicht es jedem Mitglied, zusätzliche zugehörige Informationen zu enthalten.
Beispiel mit Tupeln
1from enum import Enum
2
3class Status(Enum):
4 ACTIVE = (1, 'Active user')
5 INACTIVE = (2, 'Inactive user')
6 SUSPENDED = (3, 'Suspended user')
7
8# Accessing Enum members
9print(Status.ACTIVE.name) # ACTIVE
10print(Status.ACTIVE.value) # (1, 'Active user')
11print(Status.ACTIVE.value[1]) # Active user
In diesem Beispiel haben die Mitglieder der Status
-Klasse jeweils zwei Werte, die den Zustand und die Beschreibung darstellen. Dies ist nützlich, wenn Sie mehreren Informationen einem Enum
-Mitglied zuordnen möchten.
Verwendung von Enum
als Flags
Pythons enum
enthält eine Flag
-Klasse, die wie Bit-Flags verwendet werden kann. Mit Flag
können mehrere Zustände in Kombination verwaltet werden.
Beispiel für Flag
1from enum import Flag, auto
2
3class Permission(Flag):
4 READ = auto()
5 WRITE = auto()
6 EXECUTE = auto()
7
8# Combining flags
9permission = Permission.READ | Permission.WRITE
10print(permission) # Permission.READ|WRITE
11print(Permission.EXECUTE in permission) # False
In diesem Beispiel werden bitweise Operationen verwendet, um mehrere Berechtigungen zu kombinieren. Mit Flag
können mehrere Zustände übersichtlich verwaltet werden.
Wichtige Punkte bei der Verwendung von Enum
Unveränderlichkeit von Enum
Enum
-Mitglieder sind unveränderlich. Einmal definiert, können ihre Namen oder Werte nicht geändert werden. Dies ist eine wichtige Eigenschaft, um Konsistenz als Konstanten zu gewährleisten.
1from enum import Enum
2
3class Days(Enum):
4 MONDAY = 1
5 TUESDAY = 2
6
7# Example of immutability
8# Days.MONDAY = 3 # AttributeError: Cannot reassign members.
Verbot von doppelten Mitgliedern
Enum
-Mitglieder müssen eindeutige Namen und Werte haben. Selbst wenn doppelte Werte erlaubt sind, priorisiert Python automatisch das erste Mitglied.
Zusammenfassung
Das enum
-Modul von Python ist ein äußerst nützliches Werkzeug zum Gruppieren von Konstanten, zur Verbesserung der Lesbarkeit und zur Aufrechterhaltung der Konsistenz im Code. Es sind unterschiedliche Einsatzmöglichkeiten denkbar, von der Grundverwendung über die automatische Wertezuweisung mit auto()
bis hin zur Nutzung als Bit-Flags.
Das richtige Verständnis und die Beherrschung von enum
können die Codequalität verbessern und helfen, Fehler zu vermeiden.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.