我想使用Python 3.4测试Enum类是否包含具有特定名称的成员.

例子:

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分,把例外作为存在的标志,但也许还有更优雅的方式?

推荐答案

你可以使用Enum.__members__-an ordered dictionary mapping names to members:

In [12]: 'One' in Constants.__members__
Out[12]: True

In [13]: 'Four' in Constants.__members__
Out[13]: False

Python-3.x相关问答推荐

使用pythonnet和nicegui时无法pickle December对象

如何获得给定列表中所有可能的元素组合?

如何使用PySide6创建切换框架?

如何从枚举中获取某个值?

将列表项的极列水平分解为新列

msg-seviri l1.5本机文件

ValueError at /register/ 视图authenticate.views.register_user 未返回HttpResponse 对象.它返回 None 相反

requests.exceptions.InvalidSchema:未找到连接适配器.我试图遍历一个列表

如何通过 python 使用 auth no priv 获取 SNMPv3?

Snakemake 'run' 指令不产生错误信息

为什么 numpy 的 `np.char.encode` 会将一个空的 unicode 数组变成一个空的 `float64` 数组?

用于 BIG 数组计算的多处理池映射比预期的要慢

使用 from re findall 组合连续匹配并分离非连续匹配

对齐文本文件中的列

具有 2 个输入的 python 3 map/lambda 方法

python3源的类图查看器应用程序

Python:pprint的模块错误,打印没有错误

如何通过命令行将数组传递给python

如何调试垂死的 Jupyter Python3 内核?

print(... sep='', '\t' ) 是什么意思?