浅谈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 相关文章推荐
Django基于ORM操作数据库的方法详解
Mar 27 Python
python矩阵转换为一维数组的实例
Jun 05 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
代码详解django中数据库设置
Jan 28 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
python保留小数位的三种实现方法
Jan 07 Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 Python
为什么说python适合写爬虫
Jun 11 Python
python计算auc的方法
Sep 09 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 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
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
js Function类型
2011/12/04 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
JS打印彩色菱形的实例代码
2018/08/15 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
win10系统中安装scrapy-1.1
2016/07/03 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
关于逃课的检讨书
2014/01/23 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
教职工代表大会主持词
2014/04/01 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
小学生手册家长意见
2015/06/03 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
九年级数学教学反思
2016/02/17 职场文书
《绝招》教学反思
2016/02/20 职场文书