浅谈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 相关文章推荐
win10系统中安装scrapy-1.1
Jul 03 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
python交互式图形编程实例(二)
Nov 17 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
python计算两个数的百分比方法
Jun 29 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
Python文件操作函数用法实例详解
Dec 24 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
python 自动化偷懒的四个实用操作
Apr 11 Python
Python中with上下文管理协议的作用及用法
Mar 18 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
PHP入门学习笔记之一
2010/10/12 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
Underscore源码分析
2015/12/30 Javascript
node网页分段渲染详解
2016/09/05 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
Python检测QQ在线状态的方法
2015/05/09 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
践行三严三实心得体会
2014/10/13 职场文书
大学生实习推荐信
2015/03/27 职场文书
小学教师工作总结2015
2015/04/07 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
Java数组详细介绍及相关工具类
2022/04/14 Java/Android