auf Werte prüfen
Variante 1
Beachten Sie, dass ein Enum
Mitglied aufgerufen wird _value2member_map_
(das nicht dokumentiert ist und in zukünftigen Python-Versionen geändert / entfernt werden kann):
print(Fruit._value2member_map_)
Sie können anhand Enum
dieser Karte testen, ob sich ein Wert in Ihrem befindet :
5 in Fruit._value2member_map_
7 in Fruit._value2member_map_
Variante 2
Wenn Sie sich nicht auf diese Funktion verlassen möchten, ist dies eine Alternative:
values = [item.value for item in Fruit]
oder (wahrscheinlich besser): benutze a set
; Der in
Bediener wird effizienter:
values = set(item.value for item in Fruit)
dann testen mit
5 in values
7 in values
füge has_value
deiner Klasse hinzu
Sie können dies dann als Methode zu Ihrer Klasse hinzufügen:
class Fruit(Enum):
Apple = 4
Orange = 5
Pear = 6
@classmethod
def has_value(cls, value):
return value in cls._value2member_map_
print(Fruit.has_value(5))
print(Fruit.has_value(7))
Test auf Schlüssel
Wenn Sie nach den Namen (und nicht nach den Werten) testen möchten, würde ich Folgendes verwenden _member_names_
:
'Apple' in Fruit._member_names_
'Mango' in Fruit._member_names_