class Foo: attr = "Common" def __init__(self, arg1, arg2): self.attr1 = arg1 self.attr2 = arg2 def use_me(self): print("Foo: use_me") class Bar(Foo): def something_new(self): print("Bar: something_new") class XYZ: def xyz(self): print("XYZ: xyz") class Strange(Bar, XYZ): # Multiple inheritance pass def main(): f = Foo(1, 3) b = Bar(1, 3) xyz = XYZ() s = Strange(1, 3) b.something_new() # Bar: something_new b.use_me() # Foo: use_me s.something_new() # Bar: something_new s.use_me() # Foo: use_me s.xyz() # XYZ: xyz if __name__ == '__main__': main()