前情提示: 测试代码中,右尖括号(>
)表示命令行中输入的命令; 单独一行并以井字符(#
)开头的为输出内容; 库的导入仅在本文的第一个测试代码中展现,其他代码块均省略库的导入代码。
- 系统类型:
Windows 10
- python 版本:
Python 3.9.0
枚举是一组符号名称(枚举成员)的集合,枚举成员应该是唯一的、不可变的。
enum
模块将分为三个部分解析,第一部分主要介绍枚举的特性和 Enum
类,第二部分将介绍 Enum
类的三个变种类及自定义类,第三部分将更深入的了解枚举。
传送门
创建一个 Enum
枚举是使用 class
语法来创建的,这使得它们易于读写。但还是有一种以使用函数形式的创建方式,这个留到下文再讲,现在主要来说明一下使用 class
语法的创建方式。
import enum
class Test(enum.Enum):
A = 1
B = 'b'
上面的代码创建了一个枚举,class Test
是一个枚举
,其中 Test
就是枚举对象的名称。
A = 1
、B = 'b'
这些等号两边的整体被称为 枚举成员,等号左边的被称为枚举成员的名称,枚举通常是用来表示常量的,所以枚举成员的名称一般使用大写形式。等号右边的被称为枚举成员的值,枚举成员的值可以是任意类型,如 int
、str
等等,只需要注意枚举成员的值在 枚举对象中是唯一的。
虽然创建枚举时使用了 class
语法,但是枚举与普通的 python
类不同,可以打印一些信息来进行对比:
'''枚举'''
class Test(enum.Enum):
A = 1
print(Test) # 打印枚举
# <enum 'Test'>
print(Test.A) # 打印枚举成员本身
# Test.A
print(repr(Test.A)) # 打印枚举成员在解释器中的形式
# <Test.A: 1>
print(type(Test.A)) # 打印枚举成员类型
# <enum 'Test'>
print(isinstance(Test.A, Test)) # 判断枚举成员类型是否有枚举类型一致
# True
'''普通的 python 类'''
class Common:
A = 1
print(Common) # 打印类
# <class '__main__.Common'>
print(Common.A)