Python 比较枚举?

Python comparison of enums?

在 python 我有:

class Animal(enum.Enum):
    dog = 1
    cat = 2
    lion = 3

如何比较它们的数值?例如我想做这样的事情:

if cat > dog:
    # Something

您可以使用.value属性获取数值。

>>> import enum
>>>
>>> class Animal(enum.Enum):
...     dog = 1
...     cat = 2
...     lion = 3
...
>>>
>>> Animal.dog.value
1
>>> Animal.cat.value
2
>>>
>>> Animal.cat.value > Animal.dog.value
True

或者你可以实现你自己的 Enum class 就像 OrderedEnum(正如@Yuri Ginsburg 在评论中提到的那样)与比较所需的所有魔术方法,从而你可以比较直接变体。

>>> Animal.cat < Animal.dog
True