Aufzählungen in Python

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.

YouTube Video