class A: def __init__(self): self.n = 2 def add(self, m): print('self is {0} @A.add'.format(self)) self.n += m class B(A): def __init__(self): self.n = 3 def add(self, m): print('self is {0} @B.add'.format(self)) super().add(m) self.n += 3 class C(A): def __init__(self): self.n = 4 def add(self, m): print('self is {0} @C.add'.format(self)) super().add(m) self.n += 4 class D(B, C): def __init__(self): self.n = 5 def add(self, m): print('self is {0} @D.add'.format(self)) super().add(m) self.n += 5 d = D() d.add(2) print(d.n)
执行结果:
self is <__main__.D object at 0x031F6118> @D.add
self is <__main__.D object at 0x031F6118> @B.add
self is <__main__.D object at 0x031F6118> @C.add
self is <__main__.D object at 0x031F6118> @A.add
19
解析:
DBCA
n = 5 D.add super().add(m)->B B.add->C.add super.add->A.add :5+2->C.add:5+2+4->B.add:5+2+4+3->D.add:5+2+4+3+5
19