我希望创建一个新的枚举(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)])))
我的问题是: 是否有一种高级的方法来实现这个目标,以便有一个适当的类定义呢?比如覆盖一些元类方法等等。我想要像这样的东西,以便还可以提供docstring:
@unique
class CombinedEnumClass(IntEnum):
""" docstring """
# magic needed here
有什么想法吗?谢谢!
OrderedDict
,你可以直接使用列表推导式。 - jdehesa