浅谈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函数式编程指南(四):生成器详解
Jun 24 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
Python实现屏幕截图的两种方式
Feb 05 Python
深入浅析python with语句简介
Apr 11 Python
python进行两个表格对比的方法
Jun 27 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
python实现多张图片拼接成大图
Jan 15 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
python numpy 常用随机数的产生方法的实现
Aug 21 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 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
一个PHP+MSSQL分页的例子
2006/10/09 PHP
DedeCms模板安装/制作概述
2007/03/11 PHP
php连接mysql数据库代码
2009/03/10 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
如何将python中的List转化成dictionary
2016/08/15 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
python 实现敏感词过滤的方法
2019/01/21 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
python-地图可视化组件folium的操作
2020/12/14 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
党校自我鉴定范文
2013/10/02 职场文书
农业资源与环境专业自荐信范文
2013/12/30 职场文书
竞选部门副经理的自荐书范文
2014/02/11 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
授权收款委托书范本
2014/10/10 职场文书
2015年入党决心书
2015/02/05 职场文书
早恋主题班会
2015/08/14 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
趣味运动会标语口号
2015/12/26 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
Python中的嵌套循环详情
2022/03/23 Python