Der Aufzählungstyp kann als Beschriftung oder Sammlung von Konstanten betrachtet werden, die normalerweise zur Darstellung bestimmter begrenzter Sammlungen wie Woche, Monat, Status usw. verwendet werden. In den nativen Typen von Python (integrierte Typen) gibt es keinen speziellen Aufzählungstyp, wir können ihn jedoch über viele Methoden wie Wörterbücher, Klassen usw. implementieren:
WEEKDAY = { 'MON': 1, 'TUS': 2, 'WEN': 3, 'THU': 4, 'FRI': 5 } class Color: RED = 0 GREEN = 1 BLUE = 2
Die beiden oben genannten Methoden können als angesehen werden Bei der Implementierung einfacher Aufzählungstypen gibt es kein Problem, wenn solche Aufzählungsvariablen nur im lokalen Bereich verwendet werden. Das Problem besteht jedoch darin, dass sie alle veränderbar sind, was bedeutet, dass sie an anderen Stellen geändert werden können und sich auf die Implementierung auswirken verwenden:
WEEKDAY['MON'] = WEEKDAY['FRI'] print(WEEKDAY) {'FRI': 5, 'TUS': 2, 'MON': 5, 'WEN': 3, 'THU': 4} 通过类定义的枚举甚至可以实例化,变得不伦不类: c = Color() print(c.RED) Color.RED = 2 print(c.RED) 0 2
Natürlich können Sie auch unveränderliche Typen (unveränderlich) wie Tupel verwenden, aber dadurch geht die ursprüngliche Absicht des Aufzählungstyps verloren und die Bezeichnung wird zu einer bedeutungslosen Variablen degradiert:
COLOR = ('R', 'G', 'B') print(COLOR[0], COLOR[1], COLOR[2]) R G B
Um eine bessere Lösung bereitzustellen, hat Python die Enum-Standardbibliothek in Version 3.4 über PEP 435 hinzugefügt. Versionen vor 3.4 können auch kompatible und unterstützte Bibliotheken über pip install enum herunterladen. enum bietet drei Tools: Enum/IntEnum/unique, und ihre Verwendung ist sehr einfach. Sie können Aufzählungstypen definieren, indem Sie IntEnum erben, indem Sie die Aufzählungsmitglieder auf ganzzahlige Typen beschränken (oder in diese konvertieren können). verwendet werden als Der Dekorateur beschränkt den Wert des Aufzählungselements auf Nichtwiederholbarkeit:
from enum import Enum, IntEnum, unique try: @unique class WEEKDAY(Enum): MON = 1 TUS = 2 WEN = 3 THU = 4 FRI = 1 except ValueError as e: print(e) duplicate values found in : FRI -> MON try: class Color(IntEnum): RED = 0 GREEN = 1 BLUE = 'b' except ValueError as e: print(e) invalid literal for int() with base 10: 'b'
Das obige ist der detaillierte Inhalt vonWas ist Enum Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!