So implementieren Sie die Aufzählung in Python

WBOY
Freigeben: 2023-05-11 16:28:14
nach vorne
1212 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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;>
  注意事项如下:
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!