Python 基础(十五):枚举
发布日期:2021-06-30 11:42:15
浏览次数:2
分类:技术文章
本文共 1297 字,大约阅读时间需要 4 分钟。
目录
1 简介
起初 Python 中并未内置枚举(enum)类型,枚举是在 Python3.4 添加的新功能,此时我们可能会有一个疑问:Python3.4 之前的版本还能不能使用枚举呢?
答案是可以使用,但是不能直接使用,使用之前需要先用pip install enum
安装。 什么是枚举?
枚举可看作是一系列符号名称的集合,集合中每一个元素要保证唯一性和不可变,因此我们可以对枚举中元素进行恒等比较,通俗来讲枚举就是一系列常量的集合,枚举是可迭代的。
枚举有什么作用?
我们先来思考一个问题:不使用枚举我们如何定义常量呢?
常用的做法是采用变量名大写的方式来定义,这种方式虽然简单,但问题在于我们定义的仍然是变量、是可以被修改的,而常量是什么呢?简单来说就是不可变的量,枚举就有不可变的特性,所以枚举的主要作用就是用来定义常量的。2 使用
2.1 创建
枚举语法与 class 语法相同,之前我们在中已经介绍过 class 了,枚举的定义可以通过继承 Enum 的方式来实现, 看一下示例:
from enum import Enumclass WeekDay(Enum): Mon = 0 Tue = 1 Wed = 2 Thu = 3 Fri = 4
2.2 访问
枚举成员及属性的访问如下所示:
# 枚举成员print(WeekDay.Mon)# 枚举成员名称print(WeekDay.Mon.name)# 枚举成员值print(WeekDay.Mon.value)
枚举的迭代也很简单,如下所示:
# 方式 1for day in WeekDay: # 枚举成员 print(day) # 枚举成员名称 print(day.name) # 枚举成员值 print(day.value)# 方式 2print(list(WeekDay))
2.3 比较
枚举成员及属性可以使用 is 进行对象比较,还可以使用 == 进行值比较,看下示例:
print(WeekDay.Mon is WeekDay.Thu)print(WeekDay.Mon == WeekDay.Mon)print(WeekDay.Mon.name == WeekDay.Mon.name)print(WeekDay.Mon.value == WeekDay.Mon.value)
枚举成员不能进行大小比较,如下所示:
>>> WeekDay.Mon < WeekDay.ThuTypeError: '<' not supported between instances of 'WeekDay' and 'WeekDay'
2.4 确保枚举值唯一
我们定义枚举时,成员名称是不可以重复的,但成员值是可以重复的,如果想要保证成员值不可重复,可以通过装饰器 @unique
来实现,如下所示:
from enum import Enum, unique@uniqueclass WeekDay(Enum): Mon = 0 ...
参考:
转载地址:https://ityard.blog.csdn.net/article/details/103829565 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月24日 07时08分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
rtsp transport rtp/avp(/udp)和rtp/avp/tcp区别
2019-04-30
C语言中的位域
2019-04-30
C语言中的字节对齐
2019-04-30
大端、小端、网络字节序
2019-04-30
typedef struct与struct的区别
2019-04-30
4K分辨率是什么 你真的知道吗?
2019-04-30
QT VS配置UNICODE问题
2019-04-30
常见几种视频渲染模式介绍
2019-04-30
HTTP Keep-Alive详解
2019-04-30
HTTP协议详解
2019-04-30
分布式系统编程,你到哪一级了?
2019-04-30
centos主机名bogon解决办法
2019-04-30
3- ant 执行 build.xml
2019-04-30
Charles 抓包修改 request 请求数据和响应数据
2019-04-30
Charles 弱网测试
2019-04-30
Mock框架应用(二)-Mock Get请求
2019-04-30
Mock框架应用(三)-Mock Post请求
2019-04-30
Mock框架应用(四)-Mock 重定向请求
2019-04-30