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


猜你喜欢
- 1、存储过程基本语法: create procedure sp_name() begin ...... end; 2、如何调用: call
- 我们在操作 ini 配置文件的时候 可以使用 Python 的 configparser 库具体使用方法如下:from configpars
- 使用pip安装 pip install virtualenv因为已经安装过了,所以显示这样在这里我想在这里推荐大
- 1.算法:(设查找的数组期间为array[low, high])(1)确定该期间的中间位置K(2)将查找的值T与array[k]比较。若相等
- 我一直是使用mysql这个数据库软件,它工作比较稳定,效率也很高。在遇到严重性能问题时,一般都有这么几种可能:1、索引没有建好;2、sql写
- 前言通常在项目中,一般都需要一种编程语言来操作数据库,使用Python来操作数据库有着天然的优势,因为Python的字典和MongoDB的文
- 1.sort()方法sort()是列表的方法,修改原列表使得它按照大小排序,没有返回值,返回NoneIn [90]: x = [4, 6,
- 数在 Python 中,对数的规定比较简单,基本在小学数学水平即可理解。那么,做为零基础学习这,也就从计算小学数学题目开始吧。因为从这里开始
- 这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 在 Web 应用中,有时需要在响应请求前或者响应请求后做一些处理,为了让每个视图函数避免编写重复功能的代码,Flask 提供了请求钩子,它们
- 一些大型站点都有着非常一流的视觉外观,它们很可能在设计时使用了网格系统。网格可以是页面布局显得紧凑而且稳定,为设计师在设计站点时提供一个逻辑
- facebook的信息架构设计,是目前为止互联网上我见过的最合理的信息架构。每次培训,我基本都需要拿20分钟左右的时间来解析它,包括老的、新
- 自定义路径转换器有时候上面的内置的url转换器并不能满足我们的需求,因此django给我们提供了一个接口可以让我们自己定义自己的url转换器
- 问题描述:被搜索名字为:andy这时搜索andy正常,但是搜索a就搜不到。解决办法,在索引配置文件中的index中添加min_infix_l
- 我的mysql版本 MYSQL V5.7.9,旧版本请使用:UPDATE mysql.user SET Password=PASSWORD(
- 回调函数定义回调函数是把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就说这是回调函数。eg:js接口回
- 单例模式单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整
- 一、开头匹配从字符串开头开始匹配返回匹配对象;如果找不到匹配,则为Noneimport reprint(re.match('飞兔小哥
- PyTorch 中的 torch.utils.data 解析PyTorch 中的 torch.utils.data 解析在 PyTorch
- 第一步:保存下列文件为:CALENDAR.ASP <%@ LANGUAGE = V