浅谈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 10 Python
python小技巧之批量抓取美女图片
Jun 06 Python
浅谈Python中数据解析
May 05 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
Python 搭建Web站点之Web服务器与Web框架
Nov 06 Python
Django+JS 实现点击头像即可更改头像的方法示例
Dec 26 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
pandas DataFrame创建方法的方式
Aug 02 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
如何利用python进行时间序列分析
Aug 04 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 Python
Pandas DataFrame求差集的示例代码
Dec 13 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 __autoload()方法真的影响性能吗?
2012/03/30 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
PHP strripos函数用法总结
2019/02/11 PHP
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
vue实现购物车加减
2020/05/30 Javascript
Python实现统计单词出现的个数
2015/05/28 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
python 删除非空文件夹的实例
2018/04/26 Python
python如何读取bin文件并下发串口
2019/07/05 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
python全局变量引用与修改过程解析
2020/01/07 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
初一英语教学反思
2014/01/11 职场文书
客服专员岗位职责
2014/02/28 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
2015年元旦标语大全
2014/12/09 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
答辩状格式范本
2015/05/22 职场文书
2015年车间管理工作总结
2015/07/23 职场文书