目录
枚举类Enum总结枚举类Enum
枚举类,在企业开发中用的比较多
当我们需要定义常量时,一个办法是用大写的变量通过整数来定义,例如月份:
(资料图片)
# 当项目中需要使用12个月份时
JAN = 1
FEB = 2
...
NOV = 11
DEC = 12
但是这样的定义的类型是 int
,并且仍然是变量,并且在运算中,无法时时创建对应的值,当然这种指代是以更好的方式去使用变量数值。
这里存在更好的方法是为这样的枚举类型定义一个class
类型,然后,每个常量都是class
的一个唯一实例。Python提供了 Enum
类来实现这个功能。
优化如下
# -*- coding: utf-8 -*- from enum import Enum # 枚举中,一个名字对应一个值 Month = Enum("Month", ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Otc", "Nov", "Dec"))
这样我们就获得了 Month
类型的枚举类,可以直接使用 Month.Jan
来引用一个常量,或者枚举它的所有成员通过for
循环进行取值,
Month.__members__
是Month的内置变量,可以打印成员标签,
如果在这个方法调用上.items()
函数所有成员都打印出来,数据类型为元组
for name, member in Month.__members__.items():
print(f"{name} => {member} , {member.value}")+
定义一个颜色常量枚举
# -*- coding: utf-8 -*- from enum import Enum # 枚举中 一个一个名字对应一个值 Month = Enum("抬头-Month", ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")) print(Month.__members__) # 枚举中的值自动从1开始,不会重复 # 得到三月份的值 print(Month["Mar"].value) # 3 # 根据(2)来获得月份名字 print(Month(2).name) # Feb # 定义一个颜色的常量枚举 class Color(Enum): # 第二种:自定义一个枚举类 red = 100 green = 200 blue = 300 yellow = 200 # 不允许key相同或者value,如果value重复,根据value取name只能取第一个 print(Color(200)) # Color.green
不允许key相同或者value相同,如果value重复,根据value取name只能取第一个
总结
1.枚举类不能用来实例化对象
2.访问枚举类中的某一项,直接使用类名访问加上要访问的项即可,比如 color.RED
3.枚举类里面定义的 Key = Value,在类外部不能修改 Value 值
4.枚举项可以用来比较,使用 ==,或者 is
5.枚举类中的 Key 不能相同,Value 可以相同,但是 Value 相同的各项 Key 都会当做别名
6.枚举类可以用 for 进行遍历,members.items() 可以遍历出含有别名的类
7.如果要枚举类中的 key 也不能相同,需要导入 unique 对枚举类进行装饰
到此这篇关于Python深入浅出分析enum枚举类的文章就介绍到这了,更多相关Python枚举类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单