Python学习札记(三十九) 面向对象编程 Object Oriented Program 10

参考:使用枚举类

NOTE

#!/usr/bin/env python3

from enum import Enum

def main():
    Mouth = Enum('Mouth', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
    for name, attr in Mouth.__members__.items():
        print(name, '=>', attr, '=>', attr.value)

if __name__ == '__main__':
    main()
sh-3.2# ./oop11.py 
Jan => Mouth.Jan => 1
Feb => Mouth.Feb => 2
Mar => Mouth.Mar => 3
Apr => Mouth.Apr => 4
May => Mouth.May => 5
Jun => Mouth.Jun => 6
Jul => Mouth.Jul => 7
Aug => Mouth.Aug => 8
Sep => Mouth.Sep => 9
Oct => Mouth.Oct => 10
Nov => Mouth.Nov => 11
Dec => Mouth.Dec => 12

1.当我们定义常量的时候,一般使用大写的字母来表示,但是本质上还是需要修改的。

更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能。

枚举类Mouth有12个成员,每个成员默认有value属性,value属性默认从1开始分配。

2.也可以通过类的继承更好的控制枚举类:

from enum import Enum, unique

@unique
class Week(Enum):
    """docstring for Week"""
    Sun = 0
    Mon = 1
    Tue = 2
    Thu = 3
    Wed = 4
    Fri = 5
    Sat = 6

print(Week.Sun)
print(Week['Tue'])
print(Week.Fri.value)
Week.Sun
Week.Tue
5

a.用成员名称引用枚举常量
b.根据value的值获得枚举常量

2017/3/7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值