我们在使用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枚举类型,只要它们的值相等,那么就是两个类型的成员相等。