三行代码  ›  专栏  ›  技术社区  ›  Ariel

枚举的Python比较?

  •  0
  • Ariel  · 技术社区  · 1 周前

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

    我如何比较他们的价值观?例如,我想做这样的事情:

    if cat > dog:
        # Something
    
    1 回复  |  直到 1 周前
        1
  •  1
  •   Karl Knechtel    1 周前

    你可以用 .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 OrderedEnum (正如@Yuri Ginsburg在评论中提到的)使用比较所需的所有神奇方法,因此您可以直接比较变体。

    >>> Animal.cat < Animal.dog
    True