import traceback from Delegator import Delegator class Callable(object): def __call__(self, *args, **kw): return args, kw def method(self, *args, **kw): return args, kw if __name__ == '__main__': delegator = Delegator(Callable()) print 'Normal method call:', print delegator.method('one', two='two') print '"Direct" call (the underlying object is callable):', try: print delegator('one', two='two') except: print traceback.print_exc()