测试值
变体 1
请注意,Enum 有一个名为 _value2member_map_ 的成员(未记录,可能会在未来的 python 版本中更改/删除):
print(Fruit._value2member_map_)
# {4: <Fruit.Apple: 4>, 5: <Fruit.Orange: 5>, 6: <Fruit.Pear: 6>}
您可以针对此地图测试您的Enum 中是否有值:
5 in Fruit._value2member_map_ # True
7 in Fruit._value2member_map_ # False
变体 2
如果您不想依赖此功能,这是一种替代方法:
values = [item.value for item in Fruit] # [4, 5, 6]
或者(可能更好):使用set; in 操作符会更高效:
values = set(item.value for item in Fruit) # {4, 5, 6}
然后测试
5 in values # True
7 in values # False
将has_value 添加到您的班级
然后您可以将其作为方法添加到您的类中:
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)) # True
print(Fruit.has_value(7)) # False
按键测试
如果您想测试名称(而不是值),我会使用 _member_names_:
'Apple' in Fruit._member_names_ # True
'Mango' in Fruit._member_names_ # False