class A(object):
def setup(self):
print("A")
class B(object):
def setup(self):
print("B")
class C(A, B):
def setup(self):
super().setup()
c = C()
c.setup()
将答案打印为“A”。你知道吗
如果父类继承了其他类,则将按该顺序搜索它们。你知道吗
示例
class A(object):
def setup(self):
pass
class B(object):
def setup(self):
pass
class C(A):
pass
class D(B):
pass
class E(C, D):
def setup(self):
super().setup()
class F(D, C):
def setup(self):
super().setup()
是的,执行
super().setUp()
是调用父方法类的正确方法。你知道吗现在,关于多重继承和方法调用。Python实际上只调用一个类的方法。当您执行多重继承时,Python将创建一个“多重解析顺序”,即Python检查方法的父类的顺序。一旦在父级中找到该方法,它将停止寻找该方法(这种情况通常会发生,因为继承层次结构可能很大)。你知道吗
在您的示例中,解析顺序为:
您可以通过运行
TestLolSupv.mro()
来检查它。你知道吗如果您想控制调用对象的顺序,我建议改用委托。而且,如果您使用继承来访问父类方法,那么委托会更好。通常,当父类调用子类方法时,继承是值得的,因为这意味着您正在构建一个抽象。你知道吗
下面是一些关于python中多重继承的info。你知道吗
super.setup()
将在所有父类中从左到右搜索setup
方法,直到找到它并执行第一个找到的方法。你知道吗例如
将答案打印为“A”。你知道吗
如果父类继承了其他类,则将按该顺序搜索它们。你知道吗
示例
现在对于E,将执行A中的设置,对于F,将执行B中的设置。你知道吗
相关问题 更多 >
编程相关推荐