from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
Enum类,每一个个常量都是唯一实例
for name,member in Month.__members__.items(): print(name,'=>',member,',',member.value)
如果需要更精确地控制枚举类型,可以从Enum
派生出自定义类:
@unique
装饰器可以帮助我们检查保证没有重复值。
from enum import Enum,unique @unique class Weekday(Enum): Sun = 0 # Sun的value被设定为0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6
from enum import Enum class Color(Enum): red=1 green=2 blue=3
定义枚举时,成员名不允许重复
成员值允许相同,第二个成员的名称被视作第一个成员的别名
若要不能定义相同的成员值,可以通过 unique 装饰
成员取值:
每个成员都有名称属性和值属性:
支持迭代的方式遍历成员,按定义的顺序,如果有值重复的成员,只获取重复的第一个成员:
特殊属性 __members__
是一个将名称映射到成员的有序字典,也可以通过它来完成遍历: