我使用python 3.4中的backported Enum功能和python 2.7:
> python --version
Python 2.7.6
> pip install enum34
# Installs version 1.0...
根据python 3中的枚举文档(https://docs.python.org/3/library/enum.html#creating-an-enum),"枚举支持迭代,按定义顺序"。但是,迭代不会发生在我身上:
>>> from enum import Enum
>>> class Shake(Enum):
... vanilla = 7
... chocolate = 4
... cookies = 9
... mint = 3
...
>>> for s in Shake:
... print(s)
...
Shake.mint
Shake.chocolate
Shake.vanilla
Shake.cookies
我是否误解了某些内容,或者是在后向版本的Enums中不支持定义顺序的迭代?假设后者,是否有一种简单的方法可以按顺序强制它发生?
答案 0 :(得分:59)
我在这里找到答案:https://pypi.python.org/pypi/enum34/1.0。
对于python< 3.0,您需要指定__order__属性:
>>> from enum import Enum
>>> class Shake(Enum):
... __order__ = 'vanilla chocolate cookies mint'
... vanilla = 7
... chocolate = 4
... cookies = 9
... mint = 3
...
>>> for s in Shake:
... print(s)
...
Shake.vanilla
Shake.chocolate
Shake.cookies
Shake.mint