定义装饰器类(通过__call__魔术方法使得对象可以当成函数调用)",跟着教程走,但是完全不懂这个类的运用。
代码如下
from functools import wraps
from time import time
class Record():
"""自定义装饰器类(通过__call__魔术方法使得对象可以当成函数调用)"""
def __init__(self, output):
self.output = output
def __call__(self, func):
@wraps(func)
def wrapper(args, *kwargs):
start = time()
result = func(args, *kwargs)
self.output(func.__name__, time() - start)
return result
return wrapper
我的尝试运用如下:
def add(a,b):
print(a+b)
return a+b
R=Record(print)
R(add(1,2))
输出了3,但是没有输出装饰器内容,并没有预想的计时器输出
正确的写法应该是这样:
具体说明: