一、代码
#利用__call__方法,装饰器的执行流程:当添加装饰器语法糖时,会把语法糖的变量名加()执行,并将被装饰的函数名传入。所以当类加()执行时,执行了__init__,产生的对象就是被装饰的函数,而对象()执行时触发__call__,call方法下就能添加一些新的功能了import timeclass Timeit: def __init__(self,func): self.func=func def __call__(self, *args, **kwargs): start_time=time.time() self.func(*args,**kwargs) print('run time is %s'%(time.time()-start_time))@Timeitdef func(): time.sleep(3) return if __name__ == '__main__': func()