将成员添加到Python枚举

发布于 2021-01-29 15:26:11

我知道这 不是
标准的用例,但是我需要IntEnum在Python中向派生类动态添加元素。请注意,使用功能性API动态创建Enum是不够的。我需要向现有枚举添加元素。我怎样才能做到这一点?

背景:对于那些想知道为什么有人要这样做的人。我正在包装一个库,并且枚举的值在库中定义。我可以使用库API查询名称和值。但是我不能在初始化时执行此操作,因为它取决于库根据用户请求动态加载的组件。我可以在启动时加载所有组件,并在导入时使用功能性API来创建枚举,但这很耗时且有副作用。

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    枚举是 不可变的 ,这才是重点。您可以创建一个新的枚举代替原来的枚举:

    from enum import Enum
    
    names = [m.name for m in ExistingEnum] + ['newname1', 'newname2']
    ExistingEnum = Enum('ExistingEnum', names)
    

    但任何现有引用(例如,在其他模块中)将继续使用旧定义。

    names 可:

    • 包含成员名称的字符串,用空格或逗号分隔。值从递增1 start(可以将其设置为关键字参数,默认为1)。
    • 成员名称的可迭代形式(如上面的代码)。值从递增1 start
    • (成员名称,值)对的可迭代。
    • 成员名称->值对的映射。


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看