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')) # 遍历枚举类型 for name, member in Month.__members__.items(): print(name, '---------', member, '----------', member.value) # 直接引用一个常量 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
nächsten Abschnitt