浅谈Python 的枚举 Enum


Posted in Python onJune 12, 2017

枚举是常用的功能,看看Python的枚举.

from enum import Enum

Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))

枚举的定义

首先,定义枚举要导入enum模块。
枚举定义用class关键字,继承Enum类。

注意:

定义枚举时,成员名称不允许重复 

默认情况下,不同的成员值允许相同。但是两个相同值的成员,第二个成员的名称被视作第一个成员的别名 

如果枚举中存在相同值的成员,在通过值获取枚举成员时,只能获取到第一个成员

如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique【要导入unique模块】

for name, member in Month.__members__.items():
  print(name, '=>', member, ',', member.value)

我们就获得了Month类型的枚举类,可以直接使用Month.Jan来引用一个常量,或者枚举它的所有成员.

访问这些枚举类型可以有若干种方法:

枚举支持迭代器,可以遍历枚举成员

>>> day1 = Weekday.Mon
>>> print(day1)
Weekday.Mon
>>> print(Weekday.Tue)
Weekday.Tue
>>> print(Weekday['Tue'])
Weekday.Tue
>>> print(Weekday.Tue.value)
>>> print(day1 == Weekday.Mon)
True
>>> print(day1 == Weekday.Tue)
False
>>> print(Weekday(1))
Weekday.Mon
>>> print(day1 == Weekday(1))
True
>>> Weekday(7)
Traceback (most recent call last):
 ...
ValueError: 7 is not a valid Weekday
>>> for name, member in Weekday.__members__.items():
...   print(name, '=>', member)
...
Sun => Weekday.Sun
Mon => Weekday.Mon
Tue => Weekday.Tue
Wed => Weekday.Wed
Thu => Weekday.Thu
Fri => Weekday.Fri
Sat => Weekday.Sat

枚举取值 总结:

通过成员的名称来获取成员;通过成员值来获取成员;通过成员,来获取它的名称和值.

注意: Enum 的成员均为单例(Singleton),并且不可实例化,不可更改.

枚举是可以比较的:

举成员可进行同一性比较,可进等值比较,不能进行大小比较.

总结:Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较,并且枚举有多钟实现方法。

以上这篇浅谈Python 的枚举 Enum就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简介Python设计模式中的代理模式与模板方法模式编程
Feb 02 Python
Python中的if、else、elif语句用法简明讲解
Mar 11 Python
Python制作钉钉加密/解密工具
Dec 07 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
Flask配置Cors跨域的实现
Jul 12 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
PyCharm 光标变成黑块的解决方式
Feb 06 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
sublime text 3配置使用python操作方法
Jun 11 #Python
python爬虫之百度API调用方法
Jun 11 #Python
python数据处理实战(必看篇)
Jun 11 #Python
requests和lxml实现爬虫的方法
Jun 11 #Python
Python实现自动登录百度空间的方法
Jun 10 #Python
Python实现获取命令行输出结果的方法
Jun 10 #Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 #Python
You might like
星际争霸任务指南——神族
2020/03/04 星际争霸
需要注意的几个PHP漏洞小结
2012/02/05 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
一组SQL面试题
2016/02/15 面试题
宠物店的创业计划书范文
2014/01/11 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
导游词之杭州西湖
2019/09/19 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL