我想基于两个现有的类创建一个新的 Enum (IntEnum) 类。对此有一个可行的解决方案,如下所示:
from enum import unique, IntEnum
from itertools import chain
from collections import OrderedDict
@unique
class FirstEnumClass(IntEnum):
a = 1
b = 2
@unique
class SecondEnumClass(IntEnum):
c = 3
d = 4
# here a combined class is created:
CombinedEnumClass = unique(IntEnum('CombinedEnumClass', OrderedDict([(i.name, i.value) for i in chain(FirstEnumClass, SecondEnumClass)])))
我的问题:有没有一种奇特的方法来实现这一点,以便有一个正确的类定义?像覆盖一些元类方法,还是这样?我想要这样的东西,这样也可以给出文档字符串:
@unique
class CombinedEnumClass(IntEnum):
""" docstring """
# magic needed here
任何想法?谢谢!
最佳答案
图书馆 prevents explicitly 做到这一点:
因此,我发现 Stackoverflow answer 使用与您几乎相同的解决方法。我认为这是唯一的方法。
关于Python 枚举组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46073413/