我遇到了python中的代码。它具有4类A,B,C,D。 B和C类从A类继承。D类继承B,C。下面是我的问题
为什么类B中的super().__init__()
会导致执行类C的init方法?
为什么类B中的super().__init__()
在以下情况下不调用类A的init方法
super().__init__()
在C类中缺席吗?
为什么只有在类B和C的init方法中都包含super().__init__()
时,才执行类A的init方法?
为什么当类B和C的init方法都具有super().__init__()
时,为什么要在类A的init方法之前调用类C的init方法?
我尝试在Internet上搜索,但找不到任何答案。请帮助我
问题1的代码
class A:
def __init__(self):
print("A")
class B(A):
def __init__(self):
print("B")
super().__init__()
class C(A):
def __init__(self):
print("C")
class D(B, C):
def __init__(self):
print("D")
super().__init__()
d = D()
问题2的代码
class A:
def __init__(self):
print("A")
class B(A):
def __init__(self):
print("B")
super().__init__()
class C(A):
def __init__(self):
print("C")
class D(B, C):
def __init__(self):
print("D")
super().__init__()
d = D()
问题3的代码
class A:
def __init__(self):
print("A")
class B(A):
def __init__(self):
print("B")
super().__init__()
class C(A):
def __init__(self):
print("C")
super().__init__()
class D(B, C):
def __init__(self):
print("D")
super().__init__()
d = D()
问题4的代码与问题3的代码相同。
我希望问题4的答案是
D
B
A