常量是任何一门语言中都会使用的一种变量类型

如 要表示星期常量,我们可能会直接定义一组变量

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相关推荐

  1. java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  2. java switch枚举类,使用枚举类enum代替switch

    使用枚举类enum代替switch 使用枚举类,能大大减少switch的代码量,提高代码阅读性 public enum TestEnum { stu1("小明", "一班 ...

  3. java枚举类Enum入门理解

    目录 枚举的定义 JDK5.0之前只能自定义枚举类 自定义枚举类的理解: JDK5.0之后enum关键字定义枚举类 区别于自定义枚举类 enum的父类Enum的常用方法 toString方法和valu ...

  4. 【Java 枚举 集合】枚举类Enum、映射EnumMap、集EnumSet

    枚举Enum.映射EnumMap.集EnumSet 一.枚举Enum 1.概述 2.介绍 ① valueOf ② values 3.分析 ※ 模仿一个枚举类 二.枚举映射 EnumMap 1.概述 2 ...

  5. Kotlin 枚举类 enum

    枚举类就是一组命名的常数,是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内. 枚举类的最基本的用法是实现类型安全的枚举: enum class Direction {NORTH, SOUT ...

  6. java枚举类型数组_Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  7. java switch enum对象_Java枚举类(enum)5种常见用法和3种内部方法,详细附代码

    文章目录 Java枚举类(enum)重点用法和内部方法,附代码 一.Java 枚举类(enum) 详解5种常见的用法 1.常量 2.支持switch 3.向枚举中添加新方法 4.覆盖枚举的方法 5.实 ...

  8. Python枚举类Enum用法详解

    实际开发中,我们离不开定义各种类型,当我们需要定义类型时,一般是通过一组整数来定义.比如:定义不同的月份 JAN 1 FEB 2 MAR 3 ... NOV 11 DEC 12 大多数人想到以下几种定 ...

  9. mysql查询枚举类型转换_zendframework获取数据库中枚举类enum的数据并将其转换成数组...

    在model中建立这样的模型,在其中写入获取枚举类的方法 请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 class Student extends Zend_ ...

最新文章

  1. 毕业典礼上,硕士情侣现场求婚!校长也被甜到全程“姨母笑”
  2. java关于异常的面试程序题_java异常相关面试题
  3. 爱因斯坦谜题解答(三种算法比较)
  4. Howto: (Almost) Everything In Active Directory via C#
  5. python struct.pack()函数 (返回一个字节对象,其中包含根据格式字符串fmt打包的值v1,v2,...)
  6. MAVEN 的常用命令
  7. ArcGIS API for JavaScript 打印
  8. 服务器防火墙firewalld,指定端口开放
  9. HZOI20190819模拟26题解
  10. html如何画出四个圆圈,css3如何绘制一个圆圆的loading转圈动画
  11. 关于虾皮无货源一件代发你了解多少?详讲虾皮物流发货流程
  12. 客服管理之如何使用座席劵添加子账号(客服人数)
  13. Glyphs 3 for mac(字体设计软件)
  14. hud 1560 DNA sequence(IDA* 迭代加深搜索+估值函数)
  15. PowerMill 2017五轴联动编程视频教程
  16. 90天入门UE引擎开发--学习日记(60/100)
  17. 【双评价学习笔记2019】农业生产适宜性评价01·土地资源评价
  18. 揭秘考研阅卷“潜规则”,这样的试卷能“加分”!
  19. 拼多多怎么用有效评价做爆款,提高销量排名?
  20. web安全最亲密的战友Burp Suite—网络攻防常用工具介绍--burp suit工具初体验一

热门文章

  1. Java 18 正式发布
  2. 完善的仿京东电商开源项目
  3. 每日一皮:如何把程序员骗到手!
  4. linux ha 切换脚本,linux-HA 系统的故障切换过程细节。
  5. 对c语言和程序设计基础的体会,C语言程序设计基础与应用
  6. static在内存层面的作用_「C++ Primer plus 心得」9.内存模型和名称空间
  7. set OpenCV_ROOT
  8. Selenium自动化-清空输入框、输入内容、点击按钮
  9. 眨眼检测 疲劳检测,分享代码
  10. pytorch 卷积核