關于多重繼承
class A(object):
? ?def __init__(self, a):
? ? ? ?print 'init A...'
? ? ? ?self.a = a
class B(A):
? ?def __init__(self, a):
? ? ? ?super(B, self).__init__(a)
? ? ? ?print 'init B...'
class C(A):
? ?def __init__(self, a):
? ? ? ?super(C, self).__init__(a)
? ? ? ?print 'init C...'
class D(B, C):
? ?def __init__(self, a):
? ? ? ?super(D, self).__init__(a)
? ? ? ?print 'init D...'
>>> d = D('d')
init A...
init C...
init B...
init D...
為什么init A只出現了一次,B, C都同時繼承了A, D 繼承了B, C, ?正常我理解 init A ... ?應該出現了兩次才對,求指點
2015-09-09
原文說了:"A雖被繼承了兩次,但__init__()只調用了一次”
語句super(D,self).__init__(a)相當于調用了所有D的父類的__init__(self,a)方法,A也是D的一個父類,并且實例方法被調用了一次,所以只有一個init A...