我在 python 2.7 中使用来自 python 3.4 的反向移植 Enum 功能:
> 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 的反向移植版本还不支持按定义顺序进行迭代?假设是后者,有没有一种简单的方法可以强制它按顺序发生?
最佳答案
我在这里找到了答案: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
关于python - 在 Python 2 中按定义顺序迭代枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25982212/