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()方法查询对应项是否能被选择.拖拽或其他操作,对应的返回值类型 ...
随机推荐
- kibana转码显示
$('.truncate-by-height').each((i, dom) => { $(dom).html(decodeURIComponent($(dom).html())) })
- SQLAlchemy+Flask-RESTful使用(四)
前言 顺利出到4啦,其实学习过程中发现了不少错误,不过有些实在是没啥代表性. 最近买了两本小程序和安卓方面的书,其实从初中开始,想搞编程的目的就是写些安卓软件. 现在看来不太可能了.拿来当当兴趣爱好还 ...
- 一篇文章搞懂Android组件化
网上组件化的文章很多,我本人学习组建化的过程也借鉴了网上先辈们的文章.但大多数文章都从底层的细枝末节开始讲述,由下而上给人一种这门技术“博大精深”望而生畏的感觉.而我写这篇文章的初衷就是由上而下,希望 ...
- 解决:win7右键打开方式添加应用程序无法设置和删除多余的打开方式
win7右键打开方式添加应用程序无法设置 点击“开始”—“运行”,输入“regedit”打开注册表,在“HKEY_CLASSES_ROOT\Applications\”中找到无法添加的程序 ( 比如“ ...
- vue 图片地址错误处理
<img src="/logo.png" :onerror="defaultImg"> data() { return { defaultImg: ...
- 如何进行PDF页码编排,如何调整PDF页码顺序
PDF文件的页码顺序如何进行调整?许多小伙伴们都不知道,我们在编辑的时候只知道PDF文件的编辑方法,但是调整页码的顺序我们或许不会,但是如何去进行操作呢?看小编的方法吧!如果我们想要修改PDF文件中的 ...
- PHP消息队列实现及应用
目前对消息队列并不了解其原理,本篇文章主要是通过慕课网学习归纳的一些笔记,为后续学习打下基础. 众所周知在对网站设计的时候,会遇到给用户“群发短信”,“订单系统有大量的日志”,“秒杀设计”等,服务器没 ...
- Liunx系统下的进程与线程
1. 进程.线程的概念 a. 进程是操作系统进行资源分配的单位. b. 线程(Thread)是程序中独立的指令流,是CPU调度和分派的基本单位. c. 多进程是指同时运行多种 ...
- 前端校验插件——Validator简单使用
>>>>>>>>>>>>>>>>>>>>>>>>> ...
- The type 'Expression<>' is defined in an assembly that is not referenced.You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
在我将一个.net framework 4.0+mvc4+ef5的项目,升级到.net framework 4.6.1+mvc5+ef6之后,解决了所有的升级带来的问题,唯独在razor的cshtml ...