将成员添加到Python枚举
我知道这 不是
标准的用例,但是我需要IntEnum
在Python中向派生类动态添加元素。请注意,使用功能性API动态创建Enum是不够的。我需要向现有枚举添加元素。我怎样才能做到这一点?
背景:对于那些想知道为什么有人要这样做的人。我正在包装一个库,并且枚举的值在库中定义。我可以使用库API查询名称和值。但是我不能在初始化时执行此操作,因为它取决于库根据用户请求动态加载的组件。我可以在启动时加载所有组件,并在导入时使用功能性API来创建枚举,但这很耗时且有副作用。
-
枚举是 不可变的 ,这才是重点。您可以创建一个新的枚举代替原来的枚举:
from enum import Enum names = [m.name for m in ExistingEnum] + ['newname1', 'newname2'] ExistingEnum = Enum('ExistingEnum', names)
但任何现有引用(例如,在其他模块中)将继续使用旧定义。
names
可:- 包含成员名称的字符串,用空格或逗号分隔。值从递增1
start
(可以将其设置为关键字参数,默认为1)。 - 成员名称的可迭代形式(如上面的代码)。值从递增1
start
。 - (成员名称,值)对的可迭代。
- 成员名称->值对的映射。
- 包含成员名称的字符串,用空格或逗号分隔。值从递增1