【发布时间】:2015-01-24 14:06:03
【问题描述】:
我知道这不是标准用例,但我需要动态地将元素添加到 Python 中的 IntEnum 派生类。请注意,使用功能 API 动态创建 Enum 是不够的。我需要向现有枚举添加元素。我该怎么做?
背景:对于那些想知道为什么有人要这样做的人。我正在包装一个库,枚举的值是在库中定义的。我可以使用库 API 查询名称和值。但是我不能在初始化时这样做,因为它取决于库根据用户请求动态加载的组件。我可以在启动时加载所有组件并使用功能 API 在导入时创建枚举,但这很耗时并且有副作用。
【问题讨论】:
-
ENUM 的重点不就是不变性吗?
-
你不能。甚至 扩展现有枚举的子类 也受到防范。
-
@MartijnPieters 对这个特定用例有什么建议吗?
-
@MightyPork 是的,但是 Python 是一种很棒的动态胶水语言,很多时候你需要与你无法控制的东西进行交互。
-
@Hernan:我很好奇你为什么不接受你需要的答案?