class Proxy(object): def __init__(self, instance): self.__dict__['_instance'] = instance def __getattr__(self, key): if key == '_instance': return self.__dict__['_instance'] else: return getattr(self._instance, key) def __setattr__(self, key, value): return setattr(self._instance, key, value) class SomeClass(object): def foo(self): return 42 x = SomeClass() p = Proxy(x) print p.foo() # 42 p.bar = 1 print x.bar # 1