6.5、使用枚举法

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__ 是一个将名称映射到成员的有序字典,也可以通过它来完成遍历:

 

posted @ 2020-04-05 15:31  soberkkk  阅读(140)  评论(0编辑  收藏  举报