浅谈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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python和php通信乱码问题解决方法
Apr 15 Python
python提取页面内url列表的方法
May 25 Python
python实现杨辉三角思路
Jul 14 Python
Python进程间通信之共享内存详解
Oct 30 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
python3实现点餐系统
Jan 24 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python查看数据类型的方法
Oct 12 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
python 获取字典特定值对应的键的实现
Sep 29 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
Python程序员开发中常犯的10个错误
2014/07/07 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Python中格式化format()方法详解
2017/04/01 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
八项规定整改措施
2014/02/12 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
php png失真的原因及解决办法
2021/10/24 PHP