J'utilise les fonctionnalités backported Enum de python 3.4 avec python 2.7:
> python --version
Python 2.7.6
> pip install enum34
# Installs version 1.0...
D'après la documentation d'Enums dans python 3 ( https://docs.python.org/3/library/enum.html#creating-an-enum) ) , "Les énumérations prennent en charge l'itération, dans l'ordre de la définition ". Toutefois, l'itération ne se produit pas pour moi:
>>> 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
Est-ce que je comprends mal quelque chose ou l'itération dans l'ordre des définitions n'est-elle pas encore prise en charge dans les versions avec portage de Enums? En supposant que ce soit le cas, y a-t-il un moyen facile de le forcer dans l’ordre?
J'ai trouvé la réponse ici: https://pypi.python.org/pypi/enum34/1. .
Pour python <3.0, vous devez spécifier un attribut __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