首页 / PYTHON / Python3(八) 枚举详解
Python3(八) 枚举详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python3(八) 枚举详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2190字,纯文字阅读大概需要4分钟。
内容图文
![Python3(八) 枚举详解](/upload/InfoBanner/zyjiaocheng/1237/98e5e5d5e1634aad8665befccdfb9f05.jpg)
一.枚举其实是一个类
建议标识名字用大写
1.枚举类:
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW) #VIP.YELLOW #关注的是它的标签不是数字
2 枚举和普通类相比的优势
三种其他的普通方法表示枚举:
(1) yellow = 1 green = 2 (2)字典的表示方式 {‘yellow‘:1,‘green‘:2} (3)类的表示方式 class TypeDiamond(): yellow = 1 green = 2
这些方式,它们都是可变的,可以在代码中轻易的更改值,且没有防止相同标签的功能。
3.枚举的特点:
from enum import Enum class VIP(Enum): YELLOW = 1 #YELLOW= 2 #不可重复,报错 BLACK = 3 RED = 4 print(VIP.YELLOW) #VIP.YELLOW = 6 #不可更改,报错
二.枚举类型、枚举名称与枚举值
1.获取枚举类型下某一数值:
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW.value) print(VIP.YELLOW.name) print(VIP.YELLOW) print(VIP[‘YELLOW‘]) #1 #枚举值#YELLOW #<class ‘str‘> 获取标签名#VIP.YELLOW #<enum ‘VIP‘> 枚举类型#VIP.YELLOW
2.枚举是可以遍历的:
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 for v in VIP : print(v) #VIP.YELLOWVIP.GREEN VIP.BLACK VIP.RED
三. 枚举的比较运算
1.两个枚举之间可以使用等值比较(==),枚举与数值比较的判断结果不对。两个枚举之间不能进行大小比较。
2.支持is操作:
result = VIP.GREEN is VIP.GREEN #True
3.两个大类之间也可以进行等值比较,不过结果是False:
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 class VIP1(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.GREEN ==VIP1.GREEN) #False
四.枚举注意事项
1.枚举的数值可以相同,在这种情况下,将第二种枚举类型看成别名。遍历时不会打印别名:
class VIP(Enum): YELLOW = 1 GREEN = 1 #别名,不会报错 BLACK = 3 RED = 4 print(VIP.GREEN) #VIP.YELLOW
2.把别名加入遍历循环:
(1) for v in VIP.__members__.items() : print(v) #(‘YELLOW‘, <VIP.YELLOW: 1>)#(‘GREEN‘, <VIP.GREEN: 1>)#(‘BLACK‘, <VIP.BLACK: 3>)#(‘RED‘, <VIP.RED: 4>) (2) 或者遍历__members__: for v in VIP.__members__: print(v) #YELLOW#GREEN#BLACK#RED
五.枚举转换
1.在数据库里一般存储数值或者标签名字来代表枚举类型,推荐存储数值,数字占用的空间更小。但是不建议在代码种用数值代表枚举,可读性不强。
2.如何将数字转换成枚举类型:
from enum import Enum a = 1 class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP(a)) #转换枚举类型#VIP.YELLOW
六.枚举小结
1.要求每个枚举类型都是数字的时候继承IntEnum:
from enum import IntEnum class VIP(IntEnum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4
2.限制不同的枚举类型不能取相同的值:
from enum import Enum from enum import IntEnum,unique @unique #装饰器class VIP(IntEnum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4
枚举类型不能实例化,属于单例模式
原文:https://www.cnblogs.com/wlgaojin/p/12292200.html
内容总结
以上是互联网集市为您收集整理的Python3(八) 枚举详解全部内容,希望文章能够帮你解决Python3(八) 枚举详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。