class Wrapper: def __init__(self,innerClass,**kw): self.obj = innerClass(**kw) def __getattr__(self,name): innerAttr = getattr(self.obj,name) if callable(innerAttr): print name return innerAttr def MetaWrapper(innerClass): def f(): return Wrapper(innerClass) return f #return lambda ): Wrapper(innerClass) class A: def cucu(self): print 8 AA = MetaWrapper(A) >>> a= A() >>> a.cucu() 8 >>> aa= AA() >>> aa.cucu() cucu 8