如果枚举中存在值,则返回 True;如果不是,则返回 false

Ace*_*ole 4 python enums

如果我遗漏了任何明显的内容,我深表歉意;有没有办法查看一个值是否在枚举中,如果是,则返回 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 语句,但我不想在这种情况下使用它,因为我想将这个条件与其他语句一起使用。

Apl*_*123 7

枚举有一个__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)