当我调用x = D()时,为什么C' init ()没有被调用只有B' init ()被调用然后立即将D的构造函数命令为B,A,C,D 其次,x.f()显示错误参数传递的错误..
我做错了什么?
答案 0 :(得分:1)
关于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