#!/usr/bin/env python3 class A: def __init__(self): self.n = 2 def add(self, m): print('self is {0} @A.add'.format(self)) print('A', self.n) print('A', m) 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) print('B', self.n) print('B', 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) print('C', self.n) print('C', 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) print('D', self.n) print('D', m) self.n += 5 d = D() d.add(2) print('done', d.n)