Heim >Backend-Entwicklung >Python-Tutorial >Definition und Funktion der Python-Aufzählungsklasse (Beispielanalyse)
Im folgenden Artikel erfahren wir, was eine Aufzählungsklasse in Python ist. Erfahren Sie, was die Python-Enumerationsklasse ist und welche Rolle die Python-Enumerationsklasse bei der Python-Programmierung spielen kann.
Definition der Aufzählung
Um eine Aufzählung zu definieren, importieren Sie zunächst das Aufzählungsmodul.
Die Aufzählungsdefinition verwendet das Schlüsselwort class und erbt die Enum-Klasse.
Hinweis:
Beim Definieren einer Aufzählung dürfen Mitgliedsnamen nicht wiederholt werden.
Standardmäßig dürfen verschiedene Mitgliedswerte gleich sein. Aber für zwei Mitglieder mit demselben Wert wird der Name des zweiten Mitglieds als Alias des ersten Mitglieds betrachtet
Wenn es Mitglieder mit demselben Wert in der Aufzählung gibt, wird beim Abrufen des Aufzählungsmitglieds nach Wert Folgendes angezeigt: Sie können nur das erste Mitglied abrufen
Wenn Sie die Definition einer Aufzählung einschränken möchten, können Sie keine Mitglieder mit demselben Wert definieren. Sie können den Dekorator @unique verwenden [um das Unique-Modul zu importieren]
Wenn wir Konstanten definieren müssen, besteht eine Möglichkeit darin, Variablen in Großbuchstaben zu verwenden, um sie mit ganzen Zahlen zu definieren, z. B. Monat:
JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12
Der Vorteil ist die Einfachheit, der Nachteil ist, dass der Typ int ist und es immer noch eine Variable ist.
Ein besserer Ansatz besteht darin, einen Klassentyp für einen solchen Aufzählungstyp zu definieren, und dann ist jede Konstante eine eindeutige Instanz der Klasse. Python stellt die Enum-Klasse zur Verfügung, um diese Funktion zu implementieren:
from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
Auf diese Weise erhalten wir die Aufzählungsklasse vom Typ Month. Wir können Month.Jan direkt verwenden, um auf eine Konstante zu verweisen oder alle ihre Mitglieder aufzuzählen:
for name, member in Month.__members__.items(): print(name, '=>', member, ',', member.value)
Das Wertattribut ist eine int-Konstante, die dem Mitglied automatisch zugewiesen wird und standardmäßig von 1 an zählt.
Wenn Sie eine genauere Kontrolle über den Aufzählungstyp benötigen, können Sie eine benutzerdefinierte Klasse von Enum ableiten:
from enum import Enum, unique @unique class Weekday(Enum): Sun = 0 # Sun的value被设定为0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6
Der @unique-Dekorator kann uns dabei helfen, sicherzustellen, dass keine doppelten Werte vorhanden sind.
Es gibt mehrere Möglichkeiten, auf diese Aufzählungstypen zuzugreifen:
>>> day1 = Weekday.Mon >>> print(day1) Weekday.Mon >>> print(Weekday.Tue) Weekday.Tue >>> print(Weekday['Tue']) Weekday.Tue >>> print(Weekday.Tue.value) 2 >>> print(day1 == Weekday.Mon) True >>> print(day1 == Weekday.Tue) False >>> print(Weekday(1)) Weekday.Mon >>> print(day1 == Weekday(1)) True >>> Weekday(7) Traceback (most recent call last): ... ValueError: 7 is not a valid Weekday >>> for name, member in Weekday.__members__.items(): ... print(name, '=>', member) ... Sun => Weekday.Sun Mon => Weekday.Mon Tue => Weekday.Tue Wed => Weekday.Wed Thu => Weekday.Thu Fri => Weekday.Fri Sat => Weekday.Sat
Es ist ersichtlich, dass die Aufzählungskonstante über den Mitgliedsnamen referenziert werden kann oder die Aufzählungskonstante direkt basierend auf dem erhalten werden kann Wert des Wertes.
Das Obige ist der gesamte Inhalt dieses Artikels. In diesem Artikel werden hauptsächlich die relevanten Kenntnisse der Python-Aufzählungsklasse vorgestellt. Ich hoffe, dass das, was ich in diesem Artikel beschrieben habe, für Sie hilfreich ist und Ihnen das Erlernen von Python erleichtert.
Weitere Informationen zu diesem Thema finden Sie in der Spalte Python-Tutorial auf der chinesischen PHP-Website.
Das obige ist der detaillierte Inhalt vonDefinition und Funktion der Python-Aufzählungsklasse (Beispielanalyse). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!