我非常喜欢 Enum 并且我想做以下事情:
class Color(Enum):
green = 0
red = 1
blue = 1
for color in Color:
print(color.name)
print(color.value)
Run Code Online (Sandbox Code Playgroud)
如您所见,Color 类中有重复的值。在这种情况下,我可以使用什么类替代方案来支持可迭代、名称、值?
您是在问如何拥有Color.red
和 Color.blue
不blue
成为 的别名red
吗?
如果是,您将想要使用1库,它看起来像:aenum
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
Run Code Online (Sandbox Code Playgroud)
并在使用中:
for color in Color:
print(color.name)
print(color.value)
# green
# 0
# red
# 1
# blue
# 1
Run Code Online (Sandbox Code Playgroud)
使用的缺点NoAlias
是禁用了按值查找(您不能这样做Color(1)
)。
1披露:我是Python stdlibEnum
、enum34
backport和Advanced Enumeration ( aenum
) 库的作者。
归档时间: |
|
查看次数: |
1723 次 |
最近记录: |