1、什么是枚举类型?
枚举类型可以看做是一系列常量的集合,通常用于表示某些有限且固定的集合,例如月份(一年有12个月)、星期(一星期有七天)、季节(一年四个季节)等。
2、枚举的定义
- 定义枚举首先要导入enum模块
- 定义枚举使用class关键字,继承Enum类
示例代码:
from enum import Enum class Direction(Enum): west = "东" east = "西" south = "南" north = "北"
上面的代码,我们定义了方向的枚举Direction,枚举中有4个成员,每个成员都有他们自己的名称和值,打印Direction的类型如下:
注意:
- 定义成员时,成员名字不可重复
- 默认情况下,不同成员的值允许相同,但若有两个相同值的成员,第二个成员的名称将被视为第一个成员的别名
- 在存在两个相同值的成员时,通过值来获取枚举成员将只能获取到第一个成员
- 在定义枚举时,如果要限定不能定义相同值的成员,可以使用装饰器@unique(需要导入unique方法),这时候再定义值相同的成员将会报错
3、枚举取值
- 通过成员名称来获取成员
print(Direction["south"]) print(Direction.south)
- 通过成员值来获取成员
print(Direction("南"))
- 通过成员来获取他的名称和值
direction = Direction.west print(direction.name) print(direction.value)
4、枚举迭代器
- 枚举支持迭代器,可遍历枚举成员
for i in Direction: print(i)
- 如果有枚举值重复的成员,遍历时只获取它们中的第一个
class Direction(Enum): west = "东" east = "西" south = "南" north = "北" north2 = "北" for i in Direction: print(i)