如果我遗漏了任何明显的内容,我深表歉意;有没有办法查看一个值是否在枚举中,如果是,则返回 True,否则返回 False?例如,如果我从 python 文档中获取以下枚举,
from enum import Enum
class Colour(Enum):
RED = 1
GREEN = 2
BLUE = 3
Run Code Online (Sandbox Code Playgroud)
有什么方法可以执行以下操作或等效操作,而不会引发异常:
colour_test = "YELLOW"
if Colour[colour_test]:
print("In enum")
else:
print("Not in enum")
## Output wanted - "Not in enum"
## Actual output - KeyError: "YELLOW"
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用 try;except 语句,但我不想在这种情况下使用它,因为我想将这个条件与其他语句一起使用。
枚举有一个__members__
你可以检查的字典:
if colour_test in Colour.__members__:
print("In enum")
else:
print("Not in enum")
Run Code Online (Sandbox Code Playgroud)
您也可以使用带有 的通用方法hasattr
,但这会为某些非成员返回错误的结果,例如"__new__"
:
if hasattr(Colour, colour_test):
print("In enum")
else:
print("Not in enum")
Run Code Online (Sandbox Code Playgroud)