使用Python3.4,我想测试枚举类是否包含具有特定名称的成员。
示例:
class Constants(Enum):
One = 1
Two = 2
Three = 3
print(Constants['One'])
print(Constants['Four'])
给出:
Constants.One
File "C:\Python34\lib\enum.py", line 258, in __getitem__
return cls._member_map_[name]
KeyError: 'Four'
我可以捕捉到KeyError
,并将异常作为存在的指示,但也许有一种更优雅的方式?
我认为这属于EAFP(请求宽恕比请求许可更容易),这是Python相对独特的概念。
这与LBYL(三思而后行)形成了鲜明对比,当你说你在寻找“一种更优雅的方式”时,我想这正是你想要的
因此,根据文档,最好使用
try
/except
块来解决问题。TL;DR
使用
try
/except
块捕获KeyError
异常。您可以使用
Enum.__members__
-an ordered dictionary mapping names to members:可以使用以下命令测试名称是否存在:
使用x.value测试枚举值:
相关问题 更多 >
编程相关推荐