Tro*_*roy 57 python enums python-2.7
我正在使用python 3.4中的backported Enum功能和python 2.7:
> python --version
Python 2.7.6
> pip install enum34
# Installs version 1.0...
Run Code Online (Sandbox Code Playgroud)
根据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
Run Code Online (Sandbox Code Playgroud)
我是否误解了某些内容,或者是在后向版本的Enums中不支持定义顺序的迭代?假设后者,是否有一种简单的方法可以强制它按顺序发生?
Tro*_*roy 70
我在这里找到答案: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
Run Code Online (Sandbox Code Playgroud)