python之枚举类Enum
常量是任何一门语言中都会使用的一种变量类型
如 要表示星期常量,我们可能会直接定义一组变量
JAN = 1
TWO = 2
...
然后在返回给前端的时候,我们返回的就会是1,2,...这种魔法数字,导致后来的人阅读起来很麻烦。
在python中,为了代码的可读性和简洁性,更建议使用枚举类型
1、枚举类型的定义:
from enum import Enum
1)可以通过传入cls_name和一个可迭代对象来定义
传入list列表
week= Enum("Week", (["JAN", "TUE",... ]))
传入tuple元组
week = Enum("Week", ("JAN", "TUE"))
传入字典
week= Enum("Week", ({"JAN":"1", "TUE":"2"}))
传入string字符串
week= Enum("Week", "JAN TUE")
2)定义一个类,继承Enum
class Week(Enum):
JAN = 1
TUE = 2
2、枚举类型定义注意事项:
1)成员名称不能重复, 如果使用相同的key,会报错 Attempted to reuse key
2)不同成员的值允许相同,但是对于相同的值的成员,第二个成员名被看做第一个成员名的别名,在遍历的时候,只会遍历出其中一个成员
通过值回去枚举成员时,也只能获取一个
3)如果要限制枚举的值不能重复,可以使用装饰器@unique
使用了@unique装饰器,如果值出现重复,会报错:duplicate values
3、枚举取值
1)通过成员名称来取成员
week.TUE/ week["TUE"] --->
week.TUE.name---->TUE
week.TUE.value---->2
2)通过值来获取成员
Week(2) ------>
Week(2).name---->Tue
Week(2).value---->2
3)遍历取值
for week in Week:
print(week)
前面说了,如果Week中有值重复的成员,那么遍历的时候,只会遍历出一个成员,但是如果想要把所有的成员都遍历出来呢?需要用到__members__属性
for week in Week.__members__.items():
print(week)
或者: for name, member in Week.__members__.items():print(name, '=>', member, ',', member.value)
4)enum枚举类型比较
枚举成员可进行同一性比较
week.JAN is week.TUE---->False
week.JAN is not week.JAN---->False
枚举成员可进行等值比较
week.JAN.value == "1"--->True
week.JAN==week.JAN
python之枚举类Enum相关推荐
- java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...
- java switch枚举类,使用枚举类enum代替switch
使用枚举类enum代替switch 使用枚举类,能大大减少switch的代码量,提高代码阅读性 public enum TestEnum { stu1("小明", "一班 ...
- java枚举类Enum入门理解
目录 枚举的定义 JDK5.0之前只能自定义枚举类 自定义枚举类的理解: JDK5.0之后enum关键字定义枚举类 区别于自定义枚举类 enum的父类Enum的常用方法 toString方法和valu ...
- 【Java 枚举 集合】枚举类Enum、映射EnumMap、集EnumSet
枚举Enum.映射EnumMap.集EnumSet 一.枚举Enum 1.概述 2.介绍 ① valueOf ② values 3.分析 ※ 模仿一个枚举类 二.枚举映射 EnumMap 1.概述 2 ...
- Kotlin 枚举类 enum
枚举类就是一组命名的常数,是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内. 枚举类的最基本的用法是实现类型安全的枚举: enum class Direction {NORTH, SOUT ...
- java枚举类型数组_Java基础(七)泛型数组列表ArrayList与枚举类Enum
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...
- java switch enum对象_Java枚举类(enum)5种常见用法和3种内部方法,详细附代码
文章目录 Java枚举类(enum)重点用法和内部方法,附代码 一.Java 枚举类(enum) 详解5种常见的用法 1.常量 2.支持switch 3.向枚举中添加新方法 4.覆盖枚举的方法 5.实 ...
- Python枚举类Enum用法详解
实际开发中,我们离不开定义各种类型,当我们需要定义类型时,一般是通过一组整数来定义.比如:定义不同的月份 JAN 1 FEB 2 MAR 3 ... NOV 11 DEC 12 大多数人想到以下几种定 ...
- mysql查询枚举类型转换_zendframework获取数据库中枚举类enum的数据并将其转换成数组...
在model中建立这样的模型,在其中写入获取枚举类的方法 请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 class Student extends Zend_ ...
最新文章
- 毕业典礼上,硕士情侣现场求婚!校长也被甜到全程“姨母笑”
- java关于异常的面试程序题_java异常相关面试题
- 爱因斯坦谜题解答(三种算法比较)
- Howto: (Almost) Everything In Active Directory via C#
- python struct.pack()函数 (返回一个字节对象,其中包含根据格式字符串fmt打包的值v1,v2,...)
- MAVEN 的常用命令
- ArcGIS API for JavaScript 打印
- 服务器防火墙firewalld,指定端口开放
- HZOI20190819模拟26题解
- html如何画出四个圆圈,css3如何绘制一个圆圆的loading转圈动画
- 关于虾皮无货源一件代发你了解多少?详讲虾皮物流发货流程
- 客服管理之如何使用座席劵添加子账号(客服人数)
- Glyphs 3 for mac(字体设计软件)
- hud 1560 DNA sequence(IDA* 迭代加深搜索+估值函数)
- PowerMill 2017五轴联动编程视频教程
- 90天入门UE引擎开发--学习日记(60/100)
- 【双评价学习笔记2019】农业生产适宜性评价01·土地资源评价
- 揭秘考研阅卷“潜规则”,这样的试卷能“加分”!
- 拼多多怎么用有效评价做爆款,提高销量排名?
- web安全最亲密的战友Burp Suite—网络攻防常用工具介绍--burp suit工具初体验一