python枚举类型
笔记:
一:枚举类型的定义
二:枚举类和普通类的区别
1:值不可变
2:具有防止相同标签得功能,不同标签的值可以相同! 三:枚举类型、枚举值、枚举名称
1:VIP.YELLOW.Value 获得标签的值
2:VIP.BLACK.name 获取标签名称
3:枚举里面的部分为枚举类型! 四:枚举之间的比较
1: 支持等值比较和is, 不支持大小比较
2: 不同枚举类之间的比较 五:枚举的注意事项
不同标签的值相同的时候,第二种会被当做一种别名,调用时会被覆盖!
遍历的时候不会被打印出来,解决方法是:
for v in VIP.__members__.items():
print(v) 六:枚举转换
从数据库中去除某一个数值对应的值(a = 1),根据a的值匹配枚举的类型
a = 1
print(VIP(a)) 七:其他
1:IntEnum类型说明:枚举的都是int类型的!
2:限制枚举类型的值不能一样 -------23种设计模式-------实践中学习--------
-------尝试写一些包和类库------------------
CODE:
# ----------------------------------------------#
# 定义一个枚举类型
# ----------------------------------------------# from enum import Enum
from enum import IntEnum, unique class VIP(Enum):
YELLOW = 1
GREEN = 2
BLACK = 3
RED = 4 class Common:
YELLOW = 2 # 注意这里显示的是VIP.Black而不是3,枚举的意义重在标签而不是标签的值
print(VIP.BLACK) # ----------------------------------------------------#
# 枚举类和普通类的区别
# 字典和普通类封装数据: 1:可变 2:没有防止相同标签得功能
# ----------------------------------------------------# # VIP.GREEN = 6 # 当改变值得时候报错 Common.YELLOW = 9 # 改变类变量的值
print(Common.YELLOW)
x = Common() # 类的实例化
print(x.YELLOW) # ----------------------------------------------#
# 枚举类型、枚举值、枚举名称
# ----------------------------------------------#
print("Black = ", VIP.BLACK.value) # get value of Enum print("name = ", VIP.BLACK.name) # get value of Name,the type of name is str print(VIP.BLACK) # 名字为枚举类型 print(VIP['BLACK']) # 枚举可以被遍历
for v in VIP:
print(v) # ----------------------------------------------#
# 枚举之间的比较,支持等值比较,不支持大小比较
# ----------------------------------------------# result1 = VIP.GREEN == VIP.BLACK
result2 = VIP.GREEN.value == 2 # 注意这里的结果
print(result1, result2) class VIP1(Enum):
YELLOW = 1
GREEN = 2
BLACK = 3
RED = 4
WRITE = 5 result3 = VIP.GREEN == VIP1.GREEN
print(result3) # ----------------------------------------------#
# 枚举注意事项
# ----------------------------------------------# class VIP2(Enum):
YELLOW = 1
GREEN = 1 # 别名
BLACK = 3
RED = 4 for v in VIP2:
print(v) for v in VIP2.__members__.items():
print(v) for v in VIP2.__members__:
print(v) # ----------------------------------------------#
# 枚举转换
# ----------------------------------------------# a = 1
print(VIP(a)) # 可以看做是类型转换 # ----------------------------------------------#
# 枚举补充
# ----------------------------------------------# # 1:IntEnum类型说明 class VIP3(Enum):
YELLOW = 1
GREEN = "str" # 别名
BLACK = 3
RED = 4 class VIP4(IntEnum):
YELLOW = 1
# GREEN = 'str' # 字符串报错
BLACK = 3
RED = 4 # 2:限制枚举类型的值不能一样
@unique
class VIP6(Enum):
YELLOW = 1
GREEN = 1 # 当值相同的时候会报错!
BLACK = 3
RED = 4
python枚举类型的更多相关文章
- 人生苦短之Python枚举类型enum
枚举类型enum是比较重要的一个数据类型,它是一种数据类型而不是数据结构,我们通常将一组常用的常数声明成枚举类型方便后续的使用.当一个变量有几种可能的取值的时候,我们将它定义为枚举类型.在Python ...
- python 枚举类型
在python中枚举是一种类(Enum,IntEnum),存放在enum模块中.枚举类型可以给一组标签赋予一组特定的值. 枚举的特点: 枚举类中不能存在相同的标签名 枚举是可迭代的 不同的枚举标签可以 ...
- python枚举类型 Enum
在python中枚举是一种类(Enum) 枚举类中不能存在相同的标签名 枚举是可迭代的 例: from enum import Enum class Vip(Enum): MONDAY = 0 TUE ...
- Python 中的枚举类型~转
Python 中的枚举类型 摘要: 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表 ...
- Python中模拟enum枚举类型的5种方法分享
这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下 以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...
- 别再说Python没有枚举类型了,好好看看
枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. Python 的原生类型(Built-in types)里并没有专门的枚举类型,但是我们可以通 ...
- Python 的枚举类型
起步 Python 中的枚举类型 Python 的原生类型中并不包含枚举类型.为了提供更好的解决方案,Python 通过 PEP 435 在 3.4 版本中添加了 enum 标准库. 枚举类型可以看作 ...
- Python面向对象-枚举类型enum
枚举类型:在实际问题中,有些变量的值被限定在一个有限的范围内.例如:一个星期有且只有7天,一年有且只有十二个月,一个班每周有6门课程等等.如果把这些量说明为整型.字符串或者其他类型显然是不合适.编程界 ...
- PyQt(Python+Qt)学习随笔:Model中项的标记flags取值及枚举类型Qt.ItemFlag
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在Model中的项可以通过flags()方法查询对应项是否能被选择.拖拽或其他操作,对应的返回值类型 ...
随机推荐
- ABP core学习之二 IIS部署.NET CORE
本文是关于IIS部署.NET CORE的总结,以后有碰到问题将陆续添加 IIS部署.NET CORE总结 一.服务器环境 首先确定自己项目的core版本,然后下载对应的包在服务器上安装 下载地址: h ...
- Ubuntu的sources.list
参考文章: https://blog.csdn.net/u012843189/article/details/80964287 位于/etc/apt/sources.list 其中 deb http: ...
- MySQL数据优化
很多企业,可能每天应对的数据量达百万,千万,甚至上亿的访问量,这样的量已经超过普通配置的mysql所承受的量,所以为了应对日益增长的访问量,我们需要对mysql做出相应的对策,进一步优化mysql以达 ...
- ROS启动多launch文件
在ROS工程中经常需要启动好几个launch文件,比较不方便,有下面两种方法可以更高效些: 重写一个大型的launch文件,将所有的节点的启动配置信息都包含进去. 通过bash写一个xxx.sh文件, ...
- C#发送带附件的邮件的代码
如下的代码是关于C#发送带附件的邮件的代码. MailMessage m = new MailMessage();m.Subject = "File attachment!";m. ...
- hibernate-第一章-基础
一,简介 hibernate是一个开源的ORM框架,它对我们的jdbc进行了轻量级的对象封装,它将我们的POJO与数据库表简历映射关系,是一个全自动的ORM框架;hibernate可以自动生成SQL语 ...
- HTTP协议详解及http1.0与http1.1http2.0的区别
HTTP协议介绍 http(超文本传输协议)是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.特点: (1)支持客户/服务器模式. HTTP是一个客户端和服务器端请 ...
- ISP基本框架及算法介绍
什么是ISP,他的工作原理是怎样的? ISP是Image Signal Processor的缩写,全称是影像处理器.在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为 ...
- System.TimeoutException: The operation requested on PersistentChannel timed out
这个异常是在使用EasyNetQ时,遇到的问题,找了两个小时. 详细错误 Error:System.TimeoutException: The operation requested on Persi ...
- CentOS6.x 下 /etc/security/limits.conf 被改错的故障经历
Intro 我司本小厂,每个员工都是身兼数职,所以开发人员直接登录线上服务器改东西是常态.有些开发人员,自持水平较高(的确水平也是较高,但缺乏对系统的敬畏),所以总是越俎代庖,改一些本身应该是线上运维 ...