Python深入浅出分析enum枚举类
作者:Flyme?awei 发布时间:2022-07-07 15:09:14
标签:Python,枚举类,enum
枚举类Enum
枚举类,在企业开发中用的比较多
当我们需要定义常量时,一个办法是用大写的变量通过整数来定义,例如月份:
# 当项目中需要使用12个月份时
JAN = 1
FEB = 2
...
NOV = 11
DEC = 12
但是这样的定义的类型是 int
,并且仍然是变量,并且在运算中,无法时时创建对应的值,当然这种指代是以更好的方式去使用变量数值。
这里存在更好的方法是为这样的枚举类型定义一个class
类型,然后,每个常量都是class
的一个唯一实例。Python提供了 Enum
类来实现这个功能。
优化如下
# -*- coding: utf-8 -*-
from enum import Enum
# 枚举中,一个名字对应一个值
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Otc', 'Nov', 'Dec'))
这样我们就获得了 Month
类型的枚举类,可以直接使用 Month.Jan
来引用一个常量,或者枚举它的所有成员通过for
循环进行取值,
Month.__members__
是Month的内置变量,可以打印成员标签,
如果在这个方法调用上.items()
函数所有成员都打印出来,数据类型为元组
for name, member in Month.__members__.items():
print(f'{name} => {member} , {member.value}')+
定义一个颜色常量枚举
# -*- coding: utf-8 -*-
from enum import Enum
# 枚举中 一个一个名字对应一个值
Month = Enum('抬头-Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
print(Month.__members__) # 枚举中的值自动从1开始,不会重复
# 得到三月份的值
print(Month['Mar'].value) # 3
# 根据(2)来获得月份名字
print(Month(2).name) # Feb
# 定义一个颜色的常量枚举
class Color(Enum): # 第二种:自定义一个枚举类
red = 100
green = 200
blue = 300
yellow = 200 # 不允许key相同或者value,如果value重复,根据value取name只能取第一个
print(Color(200)) # Color.green
不允许key相同或者value相同,如果value重复,根据value取name只能取第一个
来源:https://aweia.blog.csdn.net/article/details/125583107
0
投稿
猜你喜欢
- JavaScript游戏开发之键盘控制层的移动截图:<html> <head> <meta http-equi
- 您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 g
- 1. 导入包我们这次的任务是随机生成一些离散的点,然后用直线(y = w *x + b )去拟合首先看一下我们需要导入的包有torch 包为
- Dreamweaver MX 2004 试用试用心得:安装:选择工作界面(我选了默认的设计模式)初次启动,选择30天试用如果你也看到这个警告
- 本文实例讲述了python简单获取数组元素个数的方法。分享给大家供大家参考。具体如下:mySeq = [1,2,3,4,5] p
- SQL Server 阻止了对组件 'Ad Hoc Distributed&nbs
- 本文实例讲述了php设计模式之正面模式。分享给大家供大家参考,具体如下:星际里面的战斗都是在地图上进行的,只要我们可以编辑地图,就可以创造一
- 目录1. 选择合适的数据结构2. 善用强大的内置函数和第三方库3. 少用循环4. 避免循环重复计算5. 少用内存、少用全局变量总结官方原文,
- 1.乘法和幂运算符● 单个 * 用于乘法运算● 两个 ** 表示幂运算>>> 2*3>>> 6>&
- Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日
- 使用:foldercleanup.py -d 10 -k c:\test\keepfile.txt c:\test表示对c:\test目录只
- argparse 模块是Python内置的用于命令项选项与参数解析的模块,可以轻松编写友好的命令行接口,能够帮助程序员为模型定义参数。传入一
- 前言:macOS自带的Apache可以提供通过http://localhost:8081访问本地文件服务,那么python有没有类似功能的库
- 管理认证系统最简单的方法是通过管理界面。然而,当你需要绝对的控制权的时候,有一些低层 API 需要深入专研,我们将在下面的章节中讨论它们。创
- JupyterLab 是 Jupyter 主打的最新数据科学生产工具,某种意义上,它的出现是为了取代Jupyter Notebook。它作为
- 一、说明 numpy.ufunc是什么函数?答
- 解决2个问题:1.身份证之类的文本数据自动转为科学计数法的问题。2.中文乱码的问题excel从web页面上导出的原理。当我们把这些数据发送到
- 1.集合的定义集合的元素是不可重复的s = {1,2,3,1,2,3,4,5}print(s)print(type(s))s1 = {1}p
- 比如 <div><img .../></div>想通过对这个div设置透明度来达到调整图片的透明度如果不
- 今天在一个QQ群中看到有人在问一个进度条的实现方式,当时因为工作时间,需求相对也比较紧,只是简单的说了一下可以通过CSS的边框属性和背景属性