具有重复值的python Enum的替代方案

时间:2016-08-01 03:55:43

标签: python enums

我非常喜欢Enum,我想做以下事情:

class Color(Enum):
    green = 0
    red = 1
    blue = 1

for color in Color:
    print(color.name)
    print(color.value)

如您所见,Color类中有重复的值。在这种情况下,我可以使用什么类替代方法来支持iterable,name,value?

1 个答案:

答案 0 :(得分:3)

您是否在询问如何{% url 'mark_doc_request_complete' bpk=brokerage.pk pk=doc.pk %} Color.red Color.blue成为blue的别名?

如果是,您将需要使用documentation 1 库,它看起来像:

red

并在使用中:

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)。

1 披露:我是aenumPython stdlib Enumenum34 backport图书馆的作者。