当我调用 x=D() 为什么不调用 C 的init () 只有 B 的init () 被调用然后立即调用 D 的构造函数.. 不应该顺序是 B,A,C,D 其次,xf()显示错误参数传递的错误..
我究竟做错了什么??
当我调用 x=D() 为什么不调用 C 的init () 只有 B 的init () 被调用然后立即调用 D 的构造函数.. 不应该顺序是 B,A,C,D 其次,xf()显示错误参数传递的错误..
我究竟做错了什么??
关于 f,您只是忘记了将它们声明为方法的 self 关键字。
对于构造函数的调用,您需要在继承树的每个类中使用“super”。
class A(object):
def __init__(self):
super(A, self).__init__()
print "A.__init__"
def f(self):
print "A.f"
class B(A, object):
def __init__(self):
super(B, self).__init__()
print "B.__init__"
class C(object):
def __init__(self):
super(C, self).__init__()
print "C.__init__"
def f(self):
print "C.f"
class D(B, C, object):
def __init__(self):
super(D, self).__init__()
print "D.__init__"
x = D()
x.f()
你会得到:
C.__init__
A.__init__
B.__init__
D.__init__
A.f