Du liest:
Python Enum: Der große Guide für das Python Enumerate

Python Enum: Der große Guide für das Python Enumerate

25.05.2022
Das Python Enum: Der große Guide inklusive Inhaltsverzeichnis (Table of Contents)

In diesem Tutorial wollen wir das Konzept der Aufzählungen (Enumerationen) oder kurz Enums in Python (Python Enum) kennenlernen.

Aufzählungen sind wichtig zu verstehen, wenn man mit einer bestimmten Programmiersprache arbeitet. Sie helfen uns, eine Sache oder eine Gruppe von Dingen, die auf die eine oder andere Weise miteinander verbunden sind, zu bezeichnen, anzuzeigen oder zu symbolisieren.

In den meisten Programmiersprachen werden Aufzählungen als Datentypen behandelt. Sie werden mithilfe einer Klasse deklariert. Sie werden dann gemeinsam verwendet, um mit einer bestimmten Funktion oder Methode zu arbeiten, die auf ihren Eigenschaften basiert.

Wir wollen versuchen zu verstehen, wie man ein Python Enum erstellt und wie man auf ebendieses zugreift.

Python Enum – die Grundlagen

Wie bereits erwähnt, werden Enumerationen (engl. Enumerations) in der Regel mithilfe einer Klasse erstellt. In Python verwenden wir dafür das Enum / Enum-Base-Modul. Wir wollen nun versuchen, einen Aufzählungstyp zu erstellen, der aus Objekten besteht, die als Früchte dargestellt werden. In Python kann dies beispielsweise mithilfe des folgenden Codeblocks geschehen.

# Import des Moduls mit dem Namen `enum`
import enum


class Fruechte(enum.Enum):  # Erzeuge die Klasse
    apfel = 1
    mango = 2
    kiwi = 3

Nachdem wir unsere Aufzählung nun erstellt haben, können wir jetzt versuchen, die Werte, Repräsentationen und Typen der Früchte in der Aufzählung auszugeben.

# Gib den Namen der Enumeration aus
print("Name der Frucht: ", end="")
print(Fruechte.apfel)

# Gib seine Repräsentation aus
print("Repräsentation der Frucht ist: ", end="")
print(repr(Fruechte.apfel))

# Gib die Datentypen der einzelnen enum-Elemente mithilfe von type() aus:
print("Der Datentyp der Frucht ist: ", end="")
print(type(Fruechte.apfel))

Wie wir aus dem obigen Code ersehen können, können wir mit den Funktionen repr und type auf den Namen, die Darstellung und den Typ einer Frucht zugreifen.

Die Ausgabe des oben genannten Codes sieht wie folgt aus:

Das Python Enum: So erstellst du ein Python Enumerate!

Über eine Aufzählung iterieren

Versuchen wir zu verstehen, wie wir über eine Aufzählung iterieren können. Wir verwenden die gleiche Aufzählung Fruechte, die mit dem enum-Modul und der Klasse in Python wie folgt erstellt wurde:

# Import des Moduls mit dem Namen `enum`
import enum


class Fruechte(enum.Enum):  # Erzeuge die Klasse
    apfel = 1
    mango = 2
    kiwi = 3

Nun wollen wir eine Python for-Schleife verwenden und versuchen, die String-Darstellung jedes einzelnen Elements oder jeder einzelnen Variablen der Klasse auszugeben. Dies kann mithilfe des folgenden Codes geschehen:

# Über alle Mitglieder der Klasse iterieren
print("Alle Mitglieder der Klasse Früchte: ")
for frucht in Fruechte:
    print(frucht)

Die Ausgabe des oben genannten Codeblocks kann wie folgt dargestellt werden:

So können wir über ein Python Enum iterieren!

Auf ähnliche Weise können wir auch die Typen der Objekte innerhalb der Klasse oder die Repräsentation der Mitglieder (engl. Enum Member / Enum Members) innerhalb der Klasse mithilfe einer Schleife ausgeben. Dies lässt sich mithilfe des folgenden Codeblocks recht einfach zeigen:

# Über alle Mitglieder der Klasse iterieren
print("Die Repräsentationen der einzelnen Klassenmitgleider sind: ")
for frucht in Fruechte:
    print(repr(frucht))

Die Ausgabe des oben genannten Codes kann wie folgt dargestellt werden:

Enumeration Member / Enumeration Members: So arbeitest du mit den einzelnen Mitgliedern!

Um alle Typen zu ermitteln, können wir den folgenden Code verwenden:

# Über alle Mitglieder der Klasse iterieren    
print ("Der jeweilige Datentyp der Mitglieder der Klasse Fruechte:")
for frucht in (Fruechte):
    print(type(frucht))

Die Ausgabe des oben genannten Codes kann wie folgt sein:

Python versucht mit Klassen (Python Classes), insbesondere der Enum-Klasse (Enumeration Classes) den Datentypen zu repräsentieren.

Damit haben wir erfolgreich eine Schleife über unsere Enumeration erstellt und somit gezeigt, dass sie problemlos iterierbar sind.

Jetzt wollen wir versuchen zu verstehen, wie man ein Dictionary zusammen mit einer Enumeration verwenden kann:

Verwendung eines Dictionarys mit einer Enumeration

Versuchen wir zu sehen, ob wir ein Dictionary auf ein Mitglied einer Klasse anwenden können. Das würde uns helfen zu beweisen, dass Enumerationen hashfähig sind. Das lässt sich mithilfe des folgenden Codes in Python zeigen:

# Das Modul `enum` importieren
import enum


class Fruechte(enum.Enum):  # Erzeuge die Klasse
    apfel = 1
    mango = 2
    kiwi = 3


# Hashing der Werte der Klasse `Fruechte`
hashmap = {}
hashmap[Fruechte.apfel] = "rot"
hashmap[Fruechte.mango] = "gelb"

# Ausgabe der Ergebnisse der Hashmap:
if hashmap == {Fruechte.apfel: "rot", Fruechte.mango: "gelb"}:
    print("Die Farben sind gehasht")
else:
    print("Die Farben sind nicht gehasht!")

Die Ausgabe des oben genannten Codes ist wie folgt:

Mit dem Dictionary und dem Python Enum Module können wir einzelne Werte wie color.red hashen und durch Strings oder Zahlen repräsentieren (String Representation).

Wie wir in der obigen Ausgabe sehen können, werden unsere Werte oder Mitglieder der Klasse Fruechte gehasht.

Zusammenfassung: Das Python Enum

Wir haben uns in diesem Tutorial kurz die Funktionsweise des Python Enum-Moduls und seine Kombination mit verschiedenen Funktionen wie repr und type und Schleifen wie der for-Schleife angeschaut. Das hilft uns zu beweisen, dass Enumerationen (Aufzählungen) sowohl iterierbar als auch hashfähig sind. Wenn ein Programmierer mit Enumerationen arbeitet, so sollte er ihre Anwendungsmöglichkeiten kennen.

Kostenlos programmieren lernen

  • Interaktiv Python & Java lernen
  • Kurse von echten Experten erstellt
  • Individuelle Hilfe, wenn du nicht weiterkommst
Kostenlos registrieren

Keine Zahlungsdaten notwendig

Das könnte dich auch interessieren

Arrow-up