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_ ...
最新文章
- Python、Unicode和中文
- 我心中的核心组件(可插拔的AOP)~分布式Session组件
- html中span的值不显示,为什么加上form标签之后就不能在span中显示获得值了?
- mysql在linux下配置_mysql数据库在Linux下安装与配置
- Go中的三种排序方法
- fullcalendar 只保留周_周末大利好!重磅全球指数加仓,210亿资金涌向A股「投资周历来了」...
- 怎么把微信机器人挂在服务器上,微信群机器人怎么弄的群里面的机器人怎么弄的???...
- PHREEQC建模及典型案例解析与高阶拓展应用【反向“编译”、“玩转”后处理技术、GibbsStudio和PhreePlo方法】
- linux读取ads1115ADC例程
- python随机森林预测案例_Random Forest算法 python实现案例分析
- 3纠结的刺:当专家还是管理者
- Java后端集成发送短信功能(用的是阿里云的短信服务)
- 早,每天都是一段全新的旅程
- 「跑象科技」获得天使+融资,打造新一代实时数据基础平台
- TIMIT dataset - The DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus
- 创建Springboot项目、java项目遇到的问题
- Spark优化-开启动态资源分配
- 无约束问题的极值条件
- 【智能制造】全球人工智能与制造业融合的现状及思考
- 我的世界服务器光影文件夹,我的世界光影包放在哪个文件夹(光影包文档保存位置)...