Python:有关IntEnum类型的比较

时间:2022-06-01 19:04:49

枚举类型的使用请参考:Python3.4 枚举类型的使用

我们在使用Enum定义枚举类型,枚举的成员不是整型,所以在做比较时不能使用如大于号(">"),小于号(“<”)作比较。只用做相等性比较。但直接和整型做相等比较,结果都为False。

Python新增了IntEnum,IntEnum是允许和整型做比较,包括大小比较和值得相等比较。

创建IntEnum

定义IntEnum首先要导入IntEnum

>>>from enum import IntEnum

和Enum一样,IntEnum也有两种方式创建:基于class和基于Function API。

基于class创建IntEnum

>>> from enum import IntEnum
>>> class Shape(IntEnum):
...   circle = 1
...   square = 2
...

基于Function API创建IntEnum

>>>from enum import IntEnum
>>>Shape = IntEnum('Shap','circle square')

比较IntEnum

>>> Shape.circle == 1
True
>>> Shape.circle < Shape.square
True

和别的IntEnum类型比较

>>>Color = IntEnum('Color','red green blue')
>>>Shape.circle == Color.red
True

可以看出,IntEnum的枚举做比较时,比较的是它们的值,即使是两个不同的IntEnum枚举类型,只要它们的值相等,那么就是两个类型的成员相等。