python枚举
来源:互联网 发布:python用什么编译器 编辑:程序博客网 时间:2024/05/29 18:07
本文转自:点击打开链接
1. 枚举的定义
首先,定义枚举要导入enum模块。枚举定义用class关键字,继承Enum类。用于定义枚举的class和定义类的class是有区别
示例代码:
from enum import Enumclass Color(Enum): red = 1 orange = 2 yellow = 3 green = 4 blue = 5 indigo = 6 purple = 7代码分析:
1.上面的代码,我们定义了颜色的枚举Color.
2.颜色枚举有7个成员,分别是Color.red、Color.orange、Color.yellow等。
3.每一个成员都有它们各自名称和值,Color.red成员的名称是:red,值是:1。
4.每个成员的数据类型就是它所属的枚举。【*注:用class定义的类,实际上就是一种类型】
1.1 定义枚举时,成员名称不允许重复
from enum import Enumclass Color(Enum): red = 1 red = 2上面的代码,就无法执行。提示错误:TypeError: Attempted to reuse key: 'red'
1.2 默认情况下,不同的成员值允许相同。但是两个相同值的成员,第二个成员的名称被视作第一个成员的别名
from enum import Enumclass Color(Enum): red = 1 red_alias = 1成员Color.red和Color.red_alias具有相同的值,那么成员Color.red_alias的名称red_alias就被视作成员Color.red名称red的别名。
1.3 如果枚举中存在相同值的成员,在通过值获取枚举成员时,只能获取到第一个成员
from enum import Enumclass Color(Enum): red = 1 red_alias = 1print(Color(1))
输出结果为:Color.red
1.4 如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique【要导入unique模块】
from enum import Enum, unique@uniqueclass Color(Enum): red = 1 red_alias = 1
再执行就会提示错误:ValueError: duplicate values found in <enum 'Color'>: red_alias -> red
2. 枚举取值
2.1 通过成员的名称来获取成员
Color['red']2.2 通过成员值来获取成员
Color(2)
2.3 通过成员,来获取它的名称和值
red_member = Color.redred_member.namered_member.value
3. 迭代器
3.1 枚举支持迭代器,可以遍历枚举成员
for color in Color: print(color)
3.2 如果枚举有值重复的成员,循环遍历枚举时只获取值重复成员的第一个成员
from enum import Enumclass Color(Enum): red = 1 orange = 2 yellow = 3 green = 4 blue = 5 indigo = 6 purple = 7 red_alias = 1for color in Color: print(color)3.3 如果想把值重复的成员也遍历出来,要用枚举的一个特殊属性__members__
from enum import Enumclass Color(Enum): red = 1 orange = 2 yellow = 3 green = 4 blue = 5 indigo = 6 purple = 7 red_alias = 1for color in Color.__members__.items(): print(color)4. 枚举比较
4.1 枚举成员可进行同一性比较
Color.red is Color.redColor.red is not Color.blue
4.2 枚举成员可进等值比较Color.blue == Color.red
4.3 枚举成员不能进行大小比较Color.red < Color.blue
阅读全文
0 0
- python枚举
- Python枚举
- python 枚举窗体 EnumWindows
- python - 文件枚举
- Python枚举类型
- python-enumerate枚举函数
- Python基础-枚举
- Python 的枚举 Enum
- python 错误枚举
- python 枚举类型实现
- Python基础-枚举-Enum
- Python 中的枚举类型
- Python: Enum枚举的实现
- python 枚举类(enum)
- Python: Enum枚举的实现
- python的枚举类 Enum
- Python中枚举的使用
- Python(十一)枚举类
- 密码学笔记6 Hash算法
- 三种方式防止表单提交
- 从原理角度解析Android (Java) http 文件上传
- TCP 简介
- JAVA发送简单邮件(QQ邮箱为例)
- python枚举
- mysql列的值默认不区分大小写
- 解题报告:CodeForces
- 出现"若 要针对 .NET Framework 4.0 或更高版本进行编译,则提供程序选项中“compilerVersion”特性的值必须为“v4.0”或更高版本。若要针对 .NET Frame
- 2016"百度之星"
- PyOpenCL教程(1)
- 文章标题 POJ 2411 : Mondriaan's Dream (状态压缩DP)
- 揭开PC-Lint9的神秘面纱
- UVA 227