Хотел возвращать объект который может вести себя как функция, но что - то не срослось. Задача стоит в профилировании тире логировании методов вот пример кода того что хотел сделать но не вышло.
class StatData(): def __init__(self): self.start_time = None self.delta_time = None self.return_obj = None self.function_name = None self.position_args = None self.named_args = None class StatResult(): def __init__(self,f,data): self.func = f self.data = data def __call__(self): return self.func def timing_decorator(callback): item = StatData() def func(f): def decor(*args,**kwargs): start = time.time() item.start_time = datetime.now() item.position_args = list(args) item.named_args = [e for e in kwargs.iteritems()] ret = f(*args,**kwargs) end = time.time() item.delta_time = end - start item.return_obj = ret item.function_name = f.__name__ callback(item) return ret return decor return (func,item)