当前位置: 移动技术网 > IT编程>脚本编程>Python > 枚举类

枚举类

2019年06月07日  | 移动技术网IT编程  | 我要评论

中国教师人才网,勇敢去爱不要逃,可爱文心阁

当需要定义常量时,一个办法是用大写变量通过整数来定义
好处是简单,缺点是类型是int,并且仍然是变量
enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较,这样这些相关常量就不会变化了

 

  使用枚举类

    from enum import enum
    month = enum('month', ('jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'))
    
    for name, member in month.__members__.items():
        print(name, '=>', member, ',', member.value)   #value属性则是自动赋给成员的int常量,默认从1开始计数
        
    #输出:jan => month.jan , 1
    #输出:feb => month.feb , 2
    #输出:mar => month.mar , 3
    #输出:apr => month.apr , 4
    #输出:may => month.may , 5
    #输出:jun => month.jun , 6
    #输出:jul => month.jul , 7
    #输出:aug => month.aug , 8
    #输出:sep => month.sep , 9
    #输出:oct => month.oct , 10
    #输出:nov => month.nov , 11
    #输出:dec => month.dec , 12

 

  自定义枚举类

  如果需要更精确地控制枚举类型,可以从enum派生出自定义类

    from enum import enum, unique
    
    @unique    #@unique装饰器可以帮助我们检查保证没有重复值
    class weekday(enum):
        sun = 00
        mon = 01
        tue = 02
        wed = 03
        thu = 04
        fri = 05
        sat = 06
        
    day1 = weekday.mon
    print(day1)    #输出:weekday.mon
    print(day1.value)    #输出:01,value属性是枚举常量的值
    
    print(weekday.tue)  #输出:weekday.tue
    print(weekday['tue'])  #输出:weekday.tue,可用成员名称引用枚举常量
    print(weekday['tue'].value)  #输出:02
    
    print(day1 == weekday.mon)  #输出:true
    print(day1 == weekday.tue)  #输出:false
    
    print(weekday('03'))    #输出:weekday.wed,根据value值获取枚举常量
    print(weekday('03').value)    #输出:03,根据value值获取枚举常量
    
    print(day1 == weekday('01'))   #输出:true
    weekday(7)    #报错
    
    for name, member in weekday.__members__.items():
        print(name, '=>', member)

    #输出:sun => weekday.sun
    #输出:mon => weekday.mon
    #输出:tue => weekday.tue
    #输出:wed => weekday.wed
    #输出:thu => weekday.thu
    #输出:fri => weekday.fri
    #输出:sat => weekday.sat

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网