【发布时间】:2021-10-13 15:30:29
【问题描述】:
是否有可能在D's __init__ 方法中,我可以调用A, B, C's __init__?以下D类只调用C's __init__。
class A:
def __init__(self, a='a'):
print("Constructor A")
self.a = a
class B:
def __init__(self, b='b'):
print("Constructor B")
self.b = b
class C:
def __init__(self, c='c'):
print("Constructor C")
self.c = c
class D(C, B, A):
def __init__(self):
super().__init__()
def run(self):
return self.b
d = D()
print(d.run)
【问题讨论】:
-
当然,如果要使用
super()进行协作多重继承,则需要在所有构造函数中使用super()。请参阅super considered super 否则,请显式调用它们 -
@juanpa.arrivillaga 你能把你的建议写成代码作为答案吗?我对 oop 不是很熟悉,非常希望学习如何做到这一点。 PS。我不是op :)
-
@MuhdMairaj 有很多现有的问题,最好的办法是通读该链接,Python 核心贡献者对它的解释比我好得多。甚至还有一个很棒的 PyCon 演讲版本:youtube.com/watch?v=EiOglTERPEo
标签: python multiple-inheritance