Verwenden Sie gewöhnliche Klassen, um Aufzählungen direkt zu implementieren
In Python sind Aufzählungen dieselben wie die Klassenvariablen, die wir in Objekten definieren. Jede Klassenvariable ist eine Aufzählung Der Zugriff auf das Aufzählungselement erfolgt wie folgt:
class color(): YELLOW = 1 RED = 2 GREEN = 3 PINK = 4 # 访问枚举项 print(color.YELLOW) # 1
Dies kann zwar das Problem lösen, ist jedoch nicht streng und nicht sehr sicher :
1. In der Aufzählungsklasse sollten keine Aufzählungselemente (Klassenvariablen) mit demselben Schlüssel vorhanden sein.
2 Eine direkte Änderung der Aufzählung außerhalb der Klasse ist nicht möglich erlaubt Der Wert des Elements
class color(): YELLOW = 1 YELLOW = 3 # 注意这里又将YELLOW赋值为3,会覆盖前面的1 RED = 2 GREEN = 3 PINK = 4 # 访问枚举项 print(color.YELLOW) # 3 # 但是可以在外部修改定义的枚举项的值,这是不应该发生的 color.YELLOW = 99 print(color.YELLOW) # 99
Lösung: Verwenden Sie das Enum-Modul
Das Enum-Modul ist ein integriertes Modul im System und kann direkt mit import importiert werden, es wird jedoch nicht empfohlen, alle Daten im Enum-Modul mit import enum zu importieren. Im Allgemeinen werden im Enum-Modul am häufigsten Enum, IntEnum und Unique verwendet. 🎜🎜#
# 导入枚举类 from enum import Enum # 继承枚举类 class color(Enum): YELLOW = 1 BEOWN = 1 # 注意BROWN的值和YELLOW的值相同,这是允许的,此时的BROWN相当于YELLOW的别名 RED = 2 GREEN = 3 PINK = 4 class color2(Enum): YELLOW = 1 RED = 2 GREEN = 3 PINK = 4
print(color.YELLOW) # color.YELLOW print(type(color.YELLOW)) # <enum 'color'> print(color.YELLOW.value) # 1 print(type(color.YELLOW.value)) # <class 'int'> print(color.YELLOW == 1) # False print(color.YELLOW.value == 1) # True print(color.YELLOW == color.YELLOW) # True print(color.YELLOW == color2.YELLOW) # False print(color.YELLOW is color2.YELLOW) # False print(color.YELLOW is color.YELLOW) # True print(color(1)) # color.YELLOW print(type(color(1))) # <enum 'color'> 注意事项如下:
color.YELLOW = 2 # Wrong, can't reassign member
4 Aufzählung, der Schlüssel und der Wert in einer Aufzählungsklasse. Der Schlüssel kann nicht gleich sein, der Wert kann gleich sein, aber die Schlüssel mit demselben Wert werden als Aliase verwendet
6 Wenn der Wert in Die Aufzählungsklasse kann nur Ganzzahlen sein, dann können Sie IntEnum importieren und dann IntEnum erben. Beachten Sie, dass zu diesem Zeitpunkt kein Fehler gemeldet wird:
from enum import IntEnum
7 . Wenn die Schlüssel in der Aufzählungsklasse nicht identisch sein können, müssen Sie gleichzeitig Enum importieren und die eindeutige Funktion
from enum import Enum, unique
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Aufzählung in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!