浅谈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使用MySQLdb访问mysql数据库的方法
Aug 03 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
Python使用functools实现注解同步方法
Feb 06 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
python学习入门细节知识点
Mar 29 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
Python enumerate() 函数如何实现索引功能
Jun 29 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 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在各种web服务器的运行模式详解
2013/06/03 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
prototype 的说明 js类
2006/09/07 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
JS如何生成动态列表
2020/09/22 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Python基本数据类型详细介绍
2014/03/11 Python
python 基础教程之Map使用方法
2017/01/17 Python
简单实现python画圆功能
2018/01/25 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
美国网上书店:Barnes & Noble
2018/08/15 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
教师考核评语
2014/04/28 职场文书
3分钟演讲稿
2014/04/30 职场文书
论群众路线学习心得体会
2014/10/31 职场文书