python Class:面向对象高级编程 Enum(枚举)、@unique
注:python 3.x版本才能使用
枚举格式:
from enum import Enum
新类名 = Enum(变量统称名,(变量1,变量2....))
Month = Enum('month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
1.
seasons=['Spring','Summer','Fall','Winter']print(list(enumerate(seasons)))
运行结果:
[(0,'Spring'),(1,'Summer'),(2,'Fall'),(3,'Winter')]
2.
fromenumimportEnumMonth=Enum('month',('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'))forname,memberinMonth.__members__.items():print(name,'=>',member,',',member.value)
运行结果:
Jan=>month.Jan,1Feb=>month.Feb,2Mar=>month.Mar,3Apr=>month.Apr,4May=>month.May,5Jun=>month.Jun,6Jul=>month.Jul,7Aug=>month.Aug,8Sep=>month.Sep,9Oct=>month.Oct,10Nov=>month.Nov,11Dec=>month.Dec,12
3. 当Class中有重复值时,会返回第一个,其他忽略
fromenumimportEnumclassWeekday(Enum):monday=1tusday=1wensdday=3thursday=9friday=5#print(Weekday(1))forninWeekday:print(n)
运行结果:
Weekday.mondayWeekday.wensddayWeekday.thursdayWeekday.friday
手动打Enum值时,一不小心打错了怎么办,又得一个个找,真麻烦。所以,有人想,如果有个方法能够检查重复值就好了,于是:@unique就出来了
fromenumimportEnum,@uniqueclassWeekday(Enum):monday=1tusday=1wensdday=3thursday=9friday=5print(Weekday(1))
运行结果:
Traceback(mostrecentcalllast):File"/usercode/file.py",line7,in<module>classWeekday(Enum):File"/usr/lib/python3.4/enum.py",line524,inunique(enumeration,alias_details))ValueError:duplicatevaluesfoundin<enum'Weekday'>:tusday->monday
4.有人也在想,我就是不改咋地!我能不能通过另一个方法把成员都打印出来?于是:__members__就出来了
fromenumimportEnumclassWeekday(Enum):monday=1tusday=1wensdday=3thursday=9friday=5forn,yinWeekday.__members__.items():print(n,'--',y,'--',y.value)f=Weekday.thursdayprint(f.value)
运行结果:
monday--Weekday.monday--1tusday--Weekday.tusday--1wensdday--Weekday.wensdday--3thursday--Weekday.thursday--9friday--Weekday.friday--59
5.枚举比较:不能比大小!!能比同值
fromenumimportEnum,unique#@uniqueclassWeekday(Enum):monday=1tusday=1wensdday=3thursday=9friday=5print(Weekday.monday==Weekday.wensdday)print(Weekday.tusdayisWeekday.friday)print(Weekday.tusday>Weekday.friday)
运行结果:
FalseFalseTraceback(mostrecentcalllast):File"/usercode/file.py",line16,in<module>print(Weekday.tusday>Weekday.friday)TypeError:unorderabletypes:Weekday()>Weekday()
看到一个很好很好的Blog,这讲的内容,他的比廖某的还要简洁明了。很喜欢。我的怎么乱?我纯粹是做笔记,没想那么多,要改构造想多了反而浪费时间。
https://blog.csdn.net/xionghuixionghui/article/details/66476601
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。