我想基于两个现有的类创建一个新的 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/

10-12 22:49