class A(object): def f(self): print 'A: doing f()' def g(self): print 'A: doing g()' class B(object): def f(self): print 'B: doing f()' def g(self): print 'B: doing g()' class C(object): def __init__(self): self.obj = A() def toA(self): self.obj = A() def toB(self): self.obj = B() def __getattr__(self, name): return getattr(self.obj, name)