在python 3中,我可以使用列表扩展来动态继承多个超类:
class Super1(object):
x = 1
class Super2(object):
y = 1
classes = [Super1, Super2]
class B(*classes):
pass
这使我可以在运行时决定将哪些混合类添加到超类列表中。
不幸的是,超类列表的
*
扩展是python2中的语法错误。是否有一种在运行时选择超类列表的公认方法? 最佳答案
您可以使用元类来填充B
的基类:
classes = Super1, Super2
class B:
__metaclass__ = lambda name, _, attrs: type(name, classes, attrs)
print(B.__bases__)
输出:
(<class '__main__.Super1'>, <class '__main__.Super2'>)
关于python - Python 2动态多重继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55752898/