Python枚举类

Python枚举类教程

枚举是一组符号名称(枚举成员)的集合,枚举成员应该是唯一的、不可变的。在枚举中,可以对成员进行恒等比较,并且枚举本身是可迭代的。

Python 中,枚举的第一个值是从 1 开始的,而不是从 0 开始的。

Python实现枚举的方式

程序有两种方式来定义枚举类:直接使用 Enum 包列出多个枚举值来创建枚举类和通过 继承 Enum 基类来派生枚举类。

Python使用Enum包实现枚举详解

语法

import enum # 定义枚举类 Day = enum.Enum('Day', ('Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun')) # 直接访问指定枚举 print(Day.Tue) print(Day.Tue.name) print(Day.Tue.value)

说明

使用 enum.Enum 定义枚举类,接着,直接使用枚举名访问枚举成员,还可以使用枚举的 name 属性访问枚举名,使用枚举的 value 属性访问枚举值。

案例

使用 Enum 包实现枚举

使用 Enum 包实现枚举,并访问枚举成员

import enum print("嗨客网(www.haicoder.net)") # 定义Day枚举类 Day = enum.Enum('Day', ('Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun')) # 直接访问指定枚举 print(Day.Tue) print(Day.Sun) print("MonName =", Day.Mon.name) print("MonValue =", Day.Mon.value) print("SunName =", Day.Sun.name) print("SunValue =", Day.Sun.value)

程序运行后,控制台输出如下:

104_python枚举.png

我们直接使用 enum.Enum 定义了一个 Day 枚举,该枚举有七个成员,我们可以直接使用枚举名访问枚举成员,同时,我们还可以使用枚举的 name 属性访问枚举名,使用枚举的 value 属性访问枚举值。

使用 Enum 变量名访问枚举

还可以使用枚举变量名来访问枚举成员

import enum print("嗨客网(www.haicoder.net)") # 定义Day枚举类 Day = enum.Enum('Day', ('Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun')) # 通过枚举变量名访问枚举 print(Day['Tue']) print(Day['Sun']) print("MonName =", Day['Mon'].name) print("MonValue =", Day['Mon'].value)

程序运行后,控制台输出如下:

105_python枚举.png

我们直接使用 enum.Enum 定义了一个 Day 枚举,并且使用枚举名加枚举值的形式来访问枚举。

遍历枚举

使用 for 循环遍历枚举的所有成员

import enum print("嗨客网(www.haicoder.net)") # 定义Day枚举类 Day = enum.Enum('Day', ('Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun')) for name, member in Day.__members__.items(): print(name, '=>', member, ',', member.value)

程序运行后,控制台输出如下:

106_python枚举.png

使用 for 循环 遍历枚举名的 memebers 成员,从而获取所有的枚举成员。

Python枚举类总结

枚举是一组符号名称(枚举成员)的集合,枚举成员应该是唯一的、不可变的。在枚举中,可以对成员进行恒等比较,并且枚举本身是可迭代的。

在 Python 中,枚举的第一个值是从 1 开始的,而不是从 0 开始的。