如何创建一个枚举类

  1. 需要导入enum包下的Enum类
  2. 创建类的时候需要继承Enum类

为什么用枚举类型表示?

  1. 不可变。枚举类里的标签和值是不可改变的
  2. 避免出现相同的重复的标签。枚举类中如果出现相同的标签会报错
  1. from enum import Enum
  2. class MyColor(Enum):
  3. #枚举类变量需要大写
  4. Green='绿色'
  5. Yelllow='黄色'
  6. RED=‘红色’
  7. # 获取到枚举类型 注意区分枚举类型,枚举名字,枚举的值
  8. print(MyColor.GREEN) #MyColor.GREEN
  9. #获取到枚举类标签下的值
  10. print(MyColor.RED.value) # 红色
  11. #获取枚举类标签的名字
  12. print(MyColor.RED.name) #RED
  13. #枚举可以通过遍历得到枚举类型
  14. for c in MyColor:
  15. print(c) #MyColor.YELLOW MyColor.RED MyColor.GREEN

有关枚举类型的比较

枚举类只能和枚举类做比较,不能喝别的数据类型做比较,不同的枚举类的枚举类型可以做比较只不过结果为false
枚举类不能做大小比较,只能做等值(==)和身份判断(is)比较

  1. print(MyColor.GREEN == MyColor.GREEN) #True
  2. print(MyColor.RED is MyColor.RED) # True

枚举类型注意事项

相同的value的枚举类型应该指的是同一种类型,便利的时候不会便利出相同value中的

  1. class VIP(Enum):
  2. Red = 1
  3. RED_ALLIAS = 1
  4. GREEN = 2
  5. YELLOW = 3
  6. for v in VIP:
  7. print(v) #注意:不会打印出RED_ALLIAS
  8. #打印出所有的枚举类型
  9. for v in VIP.__members__:
  10. print(v)
  11. '''
  12. 最后结果:
  13. Red
  14. RED_ALLIAS
  15. GREEN
  16. YELLOW
  17. '''

可以通过枚举类(变量)来判断这个值对应枚举类中哪个枚举类型,如果没有则会报错

枚举类补充知识点

如果枚举类继承了enum包中的InitEnum类

  1. value必须只能是数字
  2. 如果想相同的value报错的话可以引入enum包下的unqiue装装饰器,并且在声明枚举类之前使用@unique来启用装饰器


  1. @unique
  2. class IntOnly(IntEnum):
  3. a = 1
  4. b = 2
  5. c = 3