Python bietet in Version 3.4 und höher einen nativen Enum-Typ. Für frühere Versionen können Sie Bibliotheken von Drittanbietern wie enum34 oder aenum verwenden.
Verwenden von enum34 oder stdlib Enum:
from enum import Enum Animal = Enum('Animal', 'ant bee cat dog') Animal.ant # <Animal.ant: 1> Animal['ant'] # <Animal.ant: 1> (string lookup) Animal.ant.name # 'ant' (inverse lookup)
Verwenden von aenum:
from aenum import Enum Animal = Enum('Animal', 'ant bee cat dog') Animal.ant # same as enum34 Animal['ant'] # same as enum34 Animal.ant.name # same as enum34
Früher verwenden Python-Versionen:
Für frühere Python-Versionen können Sie eine benutzerdefinierte Funktion wie diese verwenden:
def enum(**enums): return type('Enum', (), enums) Numbers = enum(ONE=1, TWO=2, THREE='three') Numbers.ONE # 1 Numbers.TWO # 2 Numbers.THREE # 'three'
Automatische Aufzählung:
Sie können für die automatische Aufzählung auch die folgende Funktion verwenden:
def enum(*sequential, **named): enums = dict(zip(sequential, range(len(sequential))), **named) return type('Enum', (), enums) Numbers = enum('ZERO', 'ONE', 'TWO') Numbers.ZERO # 0 Numbers.ONE # 1
Umkehren Zuordnung:
Zur Unterstützung der Konvertierung von Enum-Werten zurück in Namen:
def enum(*sequential, **named): enums = dict(zip(sequential, range(len(sequential))), **named) reverse = dict((value, key) for key, value in enums.iteritems()) enums['reverse_mapping'] = reverse return type('Enum', (), enums) Numbers = enum('ZERO', 'ONE', 'TWO') Numbers.reverse_mapping['1'] # 'ONE'
Typing.Literal (MyPy):
In MyPy , können Sie Aufzählungen mit Literal definieren:
from typing import Literal Animal = Literal['ant', 'bee', 'cat', 'dog'] def hello_animal(animal: Animal): print(f"hello {animal}")
Dadurch werden Zuweisungen von verhindert Nicht-Enum-Werte.
Das obige ist der detaillierte Inhalt vonWie kann ich Enums in Python effektiv nutzen und darstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!