python中的枚举问题
1, 枚举其实是一个类
枚举的标识最好大写
from enum import Enum
class VIP(Enum):
YELLOW=1
GREEN=2
BLACK=3
RED=4
2枚举相较于普通类有什么区别
字典和普通类:可变,没有防止相同标签的功能
3,枚举类型,枚举名称和枚举值
如何获取枚举下对应的每一个值
VIP.YELLOW.value
如何获取枚举下对应的标签
VIP.YELLOW.name
如何获取枚举下对应的类型
VIP['GREEN']
枚举的遍历
from v in VIP:
print(v)
4枚举的比较运算
VIP.GREEN==VIP.YELLOW
False
枚举不可大小比较,但是可身份比较
枚举跨类不好比较
5枚举的注意事项
枚举的标签不可相同
枚举的数值可相同,但如果相同,则第二个标签代表着这个枚举的别名
遍历时无法遍历别名的那个枚举
但如果需要,可用:
for v in VIP.__members__.items:
print(v)
for v in VIP.__members:
print(v)
YELLOW
GREEN
BLACK
RED
6枚举的转换
在数据库中存取的是具体的数值(更简洁,推荐)或字符串
在代码中使用枚举类而不要使用数值代替,可读性增强
如果在数据库里查询的是数字,如何使枚举类型与之对应(如何把数字转化为枚举类型):
a=1
print(VIP(a))
7枚举小结
from enum import IntEnum
使枚举对应的每个数值都为Int型
from enum import Enum,unique
@unique
限制每个值不同
枚举类型无法实例化