我非常喜欢枚举,我想做以下事情:
class Color(Enum):
green = 0
red = 1
blue = 1
for color in Color:
print(color.name)
print(color.value)
如您所见,Color 类中存在重复值。在这种情况下,我可以使用什么类替代方案来支持可迭代、名称、值?
最佳答案
你是在问如何在没有 blue
的情况下拥有 Color.red
和 Color.blue
红色
?
如果是,您需要使用 aenum
1 库,它看起来像这样:
from aenum import Enum, NoAlias
# python 3
class Color(Enum, settings=NoAlias):
green = 0
red = 1
blue = 1
# python 2
class Color(Enum):
_order_ = 'green red blue'
_settings_ = NoAlias
green = 0
red = 1
blue = 1
并在使用中:
for color in Color:
print(color.name)
print(color.value)
# green
# 0
# red
# 1
# blue
# 1
使用 NoAlias
的缺点是按值查找被禁用(您不能执行 Color(1)
)。
1 披露:我是 Python stdlib Enum
的作者, enum34
backport , 和 Advanced Enumeration (aenum
)图书馆。
关于python - 具有重复值的 python 枚举的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38690784/