Einführung neuer Funktionen von Python 3.4, die mit [Eintrag von gestern] begonnen haben (http://qiita.com/ksato9700/items/9e299f2bbd13cbcc0da8). Heute ist Enum.
Dies ist eine Funktion, die ich mir schon immer gewünscht habe, daher bin ich damit zufrieden. Im Fall von Python ist Enum eher eine Klasse als ein Typ und ein Bild, das als Klassenvariable einer Klasse definiert ist, die ein Name / Wert-Paar erbt.
Verwenden Sie als Beispiel den in Aufzählung (Wikipedia) enthaltenen Cardsuit. .. Zuerst aus der Definition.
from enum import Enum
class Cardsuit(Enum):
CLUBS = 1
DIAMONDS = 2
HEARTS = 3
SPADES = 4
Wenn Sie es verwenden, instanziieren Sie entweder den Wert als Argument oder rufen Sie das Klassenattribut mit dem Namen als Schlüssel ab.
#Allen folgenden wird der gleiche Wert zugewiesen
card0 = Cardsuit(2)
card1 = Cardsuit['DIAMONDS']
card2 = Cardsuit.DIAMONDS
#Bei normalem Druck wird es im endgültigen Format ausgegeben
print(card0, card1, card2) # -> Cardsuit.DIAMONDS Cardsuit.DIAMONDS Cardsuit.DIAMONDS
#Name und Wert können separat abgerufen werden
print(card0.name, card0.value) # -> DIAMONDS 2
Darüber hinaus ist Enum of Python
Wenn Sie jedoch Enum.unique verwenden, können Sie auch die zweite NG verwenden.
from enum import Enum
#Das ist in Ordnung
class Cardsuit(Enum):
CLUBS = 1
DIAMONDS = 2
HEARTS = 3
SPADES = 4
ALT_SPADES = 4
#Das ist NG
@unique
class Cardsuit(Enum):
CLUBS = 1
DIAMONDS = 2
HEARTS = 3
SPADES = 4
ALT_SPADES = 4
Ich war ein wenig überrascht, dass Enum eine Klasse war, aber es kann sein. Sie können beispielsweise einen Fehlercode als Name / Wert-Paar definieren und nach Bedarf Methoden hinzufügen. Ich frage mich, ob es klarer wird, wenn ich etwas aktueller codiere.
Recommended Posts