如何创建一个枚举类
- 需要导入enum包下的Enum类
- 创建类的时候需要继承Enum类
为什么用枚举类型表示?
- 不可变。枚举类里的标签和值是不可改变的
- 避免出现相同的重复的标签。枚举类中如果出现相同的标签会报错
from enum import Enum
class 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) #True
print(MyColor.RED is MyColor.RED) # True
枚举类型注意事项
相同的value的枚举类型应该指的是同一种类型,便利的时候不会便利出相同value中的
class VIP(Enum):
Red = 1
RED_ALLIAS = 1
GREEN = 2
YELLOW = 3
for v in VIP:
print(v) #注意:不会打印出RED_ALLIAS
#打印出所有的枚举类型
for v in VIP.__members__:
print(v)
'''
最后结果:
Red
RED_ALLIAS
GREEN
YELLOW
'''
可以通过枚举类(变量)
来判断这个值对应枚举类中哪个枚举类型,如果没有则会报错
枚举类补充知识点
如果枚举类继承了enum包中的InitEnum类
- value必须只能是数字
- 如果想相同的value报错的话可以引入enum包下的unqiue装装饰器,并且在声明枚举类之前使用@unique来启用装饰器
@unique
class IntOnly(IntEnum):
a = 1
b = 2
c = 3