Comment comparer les Enums en Python?

Depuis Python 3.4, la Enum classe existe.

Je suis en train d'écrire un programme, où certaines constantes ont un ordre précis et je me demande qui est le plus pythonic de comparer:

class Information(Enum):
    ValueOnly = 0
    FirstDerivative = 1
    SecondDerivative = 2

Maintenant, il y a une méthode, qui doit comparer un information de Information avec les différentes énumérations:

information = Information.FirstDerivative
print(value)
if information >= Information.FirstDerivative:
    print(jacobian)
if information >= Information.SecondDerivative:
    print(hessian)

La comparaison directe ne fonctionne pas avec les Énumérations, il y a donc trois approches et je me demande qui est préférée:

Approche 1: Utiliser les valeurs:

if information.value >= Information.FirstDerivative.value:
     ...

Approche 2: Utilisation De IntEnum:

class Information(IntEnum):
    ...

Approche 3: ne Pas utiliser les Énumérations à tous:

class Information:
    ValueOnly = 0
    FirstDerivative = 1
    SecondDerivative = 2

Chaque approche fonctionne, l'Approche de la 1 est un peu plus verbeux, alors que l'Approche 2 utilise pas recommandé IntEnum de classe, tandis que l'Approche et 3 semble être la façon dont on fait cela avant Enum a été ajouté.

J'ai tendance à utiliser la méthode 1, mais je ne suis pas sûr.

Merci pour tout conseil!

Pourriez-vous citer que "ce n'est pas recommandé IntEnum de classe", s'il vous plaît ? Docs pour 3.7.1 ne sont pas déconseiller à tous.
Bien sûr, à partir de la documentation: “Pour la majorité des nouveaux code, Enum et le Drapeau sont fortement recommandés, car IntEnum et IntFlag briser certains sémantique des promesses d'une énumération (par le fait d'être comparables à des entiers, et donc par transitivité à d'autres sans rapport avec les énumérations). IntEnum et IntFlag doit être utilisé uniquement dans les cas où Enum et le Drapeau ne le fera pas; par exemple, lorsque les constantes entières sont remplacés par les énumérations, ou pour l'interopérabilité avec d'autres systèmes.”

OriginalL'auteur Sebastian Werk | 2016-09-01