如何创建一个枚举类
- 需要导入enum包下的Enum类
- 创建类的时候需要继承Enum类
为什么用枚举类型表示?
- 不可变。枚举类里的标签和值是不可改变的
- 避免出现相同的重复的标签。枚举类中如果出现相同的标签会报错
from enum import Enumclass MyColor(Enum):#枚举类变量需要大写Green='绿色'Yelllow='黄色'RED=‘红色’# 获取到枚举类型 注意区分枚举类型,枚举名字,枚举的值print(MyColor.GREEN) #MyColor.GREEN#获取到枚举类标签下的值print(MyColor.RED.value) # 红色#获取枚举类标签的名字print(MyColor.RED.name) #RED#枚举可以通过遍历得到枚举类型for c in MyColor:print(c) #MyColor.YELLOW MyColor.RED MyColor.GREEN
有关枚举类型的比较
枚举类只能和枚举类做比较,不能喝别的数据类型做比较,不同的枚举类的枚举类型可以做比较只不过结果为false
枚举类不能做大小比较,只能做等值(==)和身份判断(is)比较
print(MyColor.GREEN == MyColor.GREEN) #Trueprint(MyColor.RED is MyColor.RED) # True
枚举类型注意事项
相同的value的枚举类型应该指的是同一种类型,便利的时候不会便利出相同value中的
class VIP(Enum):Red = 1RED_ALLIAS = 1GREEN = 2YELLOW = 3for v in VIP:print(v) #注意:不会打印出RED_ALLIAS#打印出所有的枚举类型for v in VIP.__members__:print(v)'''最后结果:RedRED_ALLIASGREENYELLOW'''
可以通过枚举类(变量)来判断这个值对应枚举类中哪个枚举类型,如果没有则会报错
枚举类补充知识点
如果枚举类继承了enum包中的InitEnum类
- value必须只能是数字
- 如果想相同的value报错的话可以引入enum包下的unqiue装装饰器,并且在声明枚举类之前使用@unique来启用装饰器
@uniqueclass IntOnly(IntEnum):a = 1b = 2c = 3
