1、使用
- 先导入enum模块的Enum类并继承
- 变量名推荐大写
- 枚举可以遍历
实例:
from enum import Enum
class VIP(Enum):
YELLOW = 1
GREEN = 2
BLACK = 3
RED = 4
VIP.YELLOW = 6 # 报错
# 枚举类型、枚举的名字、枚举的值
print(VIP.YELLOW) # VIP.YELLOW 类型:enum
print(VIP.YELLOW.value) # 1
print(VIP.YELLOW.name) # YELLOW 类型:str
print(VIP['YELLOW']) # VIP.YELLOW 类型:enum
for v in VIP:
print(v)
VIP.YELLOW
VIP.GREEN
VIP.BLACK
VIP.RED
特点:不可变、避免防止相同值重复
2、比较运算
- 只能是"==" 和 “is” 比较
- 只能是同一个枚举类下的比较
3、注意事项
- 枚举的标签名不能相同,否则会报错
- 枚举的标签名不相同,但是值相同的话,不会报错,但会认为后面的是前面的别名,打印不出后面重复的枚举,正常遍历也遍历不出,除非调用一个方法
实例:
class VIP1(Enum):
YELLOW = 1
GREEN = 1
BLACK = 3
RED = 4
print(VIP1.GREEN) # VIP1.YELLOW
for x in VIP1.__members__:
print(x) # 这样可以打印出所有的 __members__后面跟.items(), 则打印出详细信息(元祖类型)
4、枚举转换
数据库存储时推荐存储数值,代码中展示推荐使用枚举类型
实例:
from enum import Enum
class VIP(Enum):
YELLOW = 1
GREEN = 2
BLACK = 3
RED = 4
a = 1
print(VIP(a)) # VIP.YELLOW
5、扩展
- IntEnum类固定枚举数值只能是int类型,否则会报错(可以是数字的str)
- unique类固定枚举数值不能重复,否则会报错
使用:
from enum import IntEnum, unique
@unique
class VIP(IntEnum):
YELLOW = 1
GREEN = 2
BLACK = 3
RED = 4