Verwendung von Aufz?hlungsklassen
In der tats?chlichen Entwicklung k?nnen wir nicht auf die Definition von Konstanten verzichten. Eine M?glichkeit besteht darin, Variablen in Gro?buchstaben zu verwenden, um sie mit ganzen Zahlen wie Monaten zu definieren:
JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12
Natürlich Das ist einfach, der Nachteil ist, dass der Typ int ist und es immer noch eine Variable ist.
Gibt es eine gute M?glichkeit?
Zu diesem Zeitpunkt definieren wir einen Klassentyp und jede Konstante ist die einzige Instanz in der Klasse. Zuf?llig stellt Python die Enum-Klasse bereit, um diese Funktion wie folgt zu implementieren:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) # 遍歷枚舉類(lèi)型 for name, member in Month.__members__.items(): print(name, '---------', member, '----------', member.value) # 直接引用一個(gè)常量 print('\n', Month.Jan)
Das Ausgabeergebnis lautet wie folgt:
Es ist zu sehen dass wir Enum direkt verwenden k?nnen, um eine Aufz?hlung einer Klasse zu definieren. Im obigen Code erstellen wir einen Aufz?hlungstyp für den Monat. Hier sind die Konstruktionsparameter zu beachten. Der erste Parameter ?Monat“ stellt den Klassennamen der Aufz?hlungsklasse dar und der zweite Tupelparameter stellt den Wert von dar die Aufz?hlungsklasse; natürlich durchl?uft die Aufz?hlungsklasse alle ihre Mitglieder über die Methode __members__. Zu beachten ist, dass member.value eine Konstante vom Typ int ist, die dem Mitglied automatisch zugewiesen wird und standardm??ig bei 1 beginnt. Darüber hinaus sind die Mitglieder von Enum alle Singletons und k?nnen nicht instanziiert oder ge?ndert werden