前情提示: 测试代码中,右尖括号(>
)表示命令行中输入的命令; 单独一行并以井字符(#
)开头的为输出内容; 库的导入仅在本文的第一个测试代码中展现,其他代码块均省略库的导入代码。
- 系统类型:
Windows 10
- python 版本:
Python 3.9.0
前两篇文章详解了枚举模块中的四个枚举类和自定义枚举类及其相关内容,没看过的小伙伴可以通过传送门点击进入前两篇文章阅读。枚举模块的最后一篇来更加深入的了解一下比较深入并且不常用的一些知识点。
传送门
不重要的枚举成员的值
在某些场景中,人们并不关心枚举成员的值是什么,可以使用下列几种方法定义枚举:
- 使用
enum.auto()
函数作为枚举成员的值 - 使用
object()
作为枚举成员的值 - 使用描述性的字符作为枚举成员的值,同时做到了可进一步解释此枚举成员
- 使用空元组作为值,并在自定义的
__new__()
中重新定义枚举成员的值(只要不重复即可)
看完以上的列举,这种实现这种需求并不局限于上面几种方法,只要最终枚举成员的值不重复即可,比如自定义一个随机生成字符串的函数。
import enum
import pickle # 封存
'''enum.auto()'''
class TestA(enum.Enum):
A = enum.auto()
B = enum.auto()
'''object()'''
class TestB(enum.Enum):
A = object()
B = object()
'''描述字符串'''
class TestC(enum.Enum):
A = '字母A'
B = '字母B'
'''元组, 并自定义 __new__()'''
class TestD(enum.Enum):
A = ()
B = ()
def __new__(cls, *args):
'''获取当前枚举成员数并加一, 将结果赋值给新定义的枚举成员'''
value = len(cls.__members__) +