这篇博客记录廖雪峰python教程的习题(六)

使用枚举类

贴两个代码吧:

>>> from enum import Enum
>>> Month1=Enum('Month2',('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'))
>>> Month1.Jan   #首先要注意这里的名字要与刚开始的Month1(就是等号前面的那个)保持一致,虽然我也不知道Enum()括号里面的Month2是干嘛的,,,,
<Month2.Jan: 1>
>>> Month2.Feb   #你看,当使用Month2调用时就会出错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Month2' is not defined
>>> Month1.Sep  
<Month2.Sep: 9>
>>> for name,member in Month1.__members__.items():  #另外还可以使用for in循环进行遍历访问其中的元素
...     print(name,'-->',member,member.value)
...
Jan --> Month2.Jan 1   分别是name(就是Enum括号里面的),member(就是Month1.name返回的值) 以及对应的member.value的值
Feb --> Month2.Feb 2
Mar --> Month2.Mar 3
Apr --> Month2.Apr 4
May --> Month2.May 5
Jun --> Month2.Jun 6
Jul --> Month2.Jul 7
Aug --> Month2.Aug 8
Sep --> Month2.Sep 9
Oct --> Month2.Oct 10
Nov --> Month2.Nov 11
Dec --> Month2.Dec 12

对于第二个例子,我们可以定义一个类,用来继承Enum

>>> from enum import Enum,unique
>>> @unique
... class Weekday(Enum):
...     Sun=0
...     Mon=1
...     Thu=2
...     Wed=3
...     Thr=4
...     Fri=5
...     Sat=6
...
>>> Weekday.Mon
<Weekday.Mon: 1>
>>> Weekday['Mon']
<Weekday.Mon: 1>
>>> Weekday(1)
<Weekday.Mon: 1>

最后写一个作业题:
“把Student的gender属性改造为枚举类型,可以避免使用字符串:”

>>> from enum import Enum,unique
>>> @unique
... class Gender(Enum):
...     male=0
...     female=1
...
>>> class Student(object):
...     def __init__(self,name,gender):
...         self.name=name
...         self.gender=gender
...
>>> xuan=Student('Zhangxuan',Gender.female)
>>> xuan.gender==Gender.female
True
>>>

使用元类

首先写一个hello.py文件(模块)
在里面写:


                
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值