浅谈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实现井字棋游戏
Mar 30 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
python2.7安装图文教程
Mar 13 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
Python告诉你木马程序的键盘记录原理
Feb 02 Python
python selenium firefox使用详解
Feb 26 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
Python中使用gflags实例及原理解析
Dec 13 Python
pytorch 6 batch_train 批训练操作
May 28 Python
用python修改excel表某一列内容的操作方法
Jun 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 SQL Injection with MySQL
2011/02/27 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
python中os操作文件及文件路径实例汇总
2015/01/15 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python 爬虫请求模块requests详解
2020/12/04 Python
实习生单位鉴定意见
2013/12/04 职场文书
房屋改造计划书
2014/01/10 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
医生见习报告范文
2014/11/03 职场文书
倡议书作文
2015/01/19 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
党支部综合考察意见
2015/06/01 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers