python3.6下枚举的基础知识学习
一、什么是枚举:
1.定义枚举要导入enum模块。
2.枚举定义用class关键字,继承enum类。
用于定义枚举的class和定义类的class是有区别
from enum import enum class color(enum): red = 1 blue = 2 yellow = 3 pink = 4 print(color.red)
注意:
首先要导入enum模块,注意大小写,class类中,继承enum类;
枚举出成员,有各自不同的名称和值,一定要不同!!
每个成员的名称是color.red,color.blue.....
1.定义枚举时,成员名不允许重复:
from enum import enum
class color(enum): red = 1 red = 2#提示错误:typeerror: attempted to reuse key: 'red' 代码不能执行
2.默认状态下,不同成员值允许相同,但是第二个成员被视为第一个成员的别名
from enum import enum
class color(enum): red = 1 red_alias = 1#red_alias就被视作成员color.red名称red的别名 ,只获取第一个
print(color(1)) #color.red
3.限制定义枚举,导入@unique装饰器后,不能定义相同值的成员
from enum import enum,unique @unique class color(enum): red = 1 red_other = 1 #此处值相同,报错valueerror: duplicate values found in : red_other -> red blue = 2 yellow = 3 pink = 4
二、获取枚举值
2.1通过成员的名称来获取成员
color['red']
2.2通过成员值来获取成员
color(2)
2.3通过成员,来获取它的名称和值
red_member = color.red red_member.name red_member.value
三、迭代器
3.1 枚举支持迭代器,可以遍历枚举成员
for c in color: print(c, end=' ')
# 打印结果 color.red color.orange color.yellow
3.2如果枚举有值重复的成员,循环遍历枚举时只获取值重复成员的第一个成员
from enum import enum class color(enum): red = 1 red_other = 1 blue = 2 yellow = 3 pink = 4 for c in color: print(c,end=' ')
# 打印结果 color.red color.blue color.yellow color.pink 并不会打印red_other
3.3如果想把值重复的成员也遍历出来,要用枚举的一个特殊属性__members__
注意:__members__和__members__.items()都不会报错,但打印结果略有不同
比较一:__members__.items()
class color(enum): red = 1 red_other = 1 blue = 2 yellow = 3 pink = 4 for c in color.__members__.items(): print(c,end=' ')
# 打印结果 ('red',
比较二:__members__
for c in color.__members__: print(c,end=' ')
# 打印结果 red red_other blue yellow pink 此时不会出值,只有名称
四、枚举的比较
4.1枚举成员可进行同一性比较
color.red is color.red
输出结果是:true
color.red is not color.blue
输出结果是:true
4.2枚举成员可进等值比较
color.blue == color.red
输出结果是:false
color.blue != color.red
输出结果是:true
4.3枚举成员不能进行大小比较
color.red < color.blue
输出结果出错:typeerror: unorderable types: color() < color()
上一篇: sort的用法
下一篇: React生命周期钩子
推荐阅读
-
Oracle数据库下约束的创建与管理(主键约束)学习讲解
-
JavaScript基础知识学习总结篇(每个知识点都附带上机的例子,而不是纯理论) 上,当前字数统计:12435
-
我想问一下PHP的学习路线图?
-
javascript学习笔记(二十) 获得和设置元素的特性(属性)_基础知识
-
一个有趣的JS:随机效果文本-定时的从一段文本中随机选择一个字符,改变颜色。可以学习一下JS。
-
前端新人学习笔记-------html/css/js基础知识点(三) - 不穿裤子的衣服
-
那些你不知道的HTML知识,快来学习一下吧
-
linux 中的MYSQL命令汇总 适合学习linux下配置mysql的朋友
-
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
-
深入学习java枚举的应用