浅谈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系列之数据处理编程实例(一)
May 22 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
python中使用PIL制作并验证图片验证码
Mar 15 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
python3 读取Excel表格中的数据
Oct 16 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
Jun 02 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
python 通过使用Yolact训练数据集
Apr 06 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
Yii实现Command任务处理的方法详解
2016/07/14 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
javascript里的条件判断
2007/02/27 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python3 操作符重载方法示例
2017/11/23 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
Python里面search()和match()的区别
2016/09/21 面试题
医学护理毕业生自荐信
2013/11/07 职场文书
品牌推广策划方案
2014/05/28 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
PHP中->和=>的意思
2021/03/31 PHP
Python使用scapy模块发包收包
2021/05/07 Python
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android