Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Aufzählung in Python

So implementieren Sie die Aufzählung in Python

WBOY
WBOYnach vorne
2023-05-11 16:28:141184Durchsuche

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

Verwenden Sie Ihre eigene Definitions-Enumerationsklasse:

print(color.YELLOW) # color.YELLOW
print(type(color.YELLOW)) # <enum &#39;color&#39;>
 
print(color.YELLOW.value)  # 1
print(type(color.YELLOW.value)) # <class &#39;int&#39;>
 
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 &#39;color&#39;>
  注意事项如下:

1. Die Enumerationsklasse kann nicht zum Instanziieren von Objekten verwendet werden.

2 Aufzählungsklasse: Verwenden Sie zum Zugriff und Hinzufügen direkt den Klassennamen. Klicken Sie einfach auf das Element, auf das Sie zugreifen möchten, z kann außerhalb der Klasse geändert werden, was bedeutet, dass der folgende Ansatz falsch ist# 🎜🎜#
color.YELLOW = 2  # Wrong, can&#39;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
importieren

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen