python类装饰器
在 Python 中,类也可以用作装饰器。这是一个使用类作为装饰器的例子,用于记录函数的调用次数。
在这个例子中,CountCalls 是一个类,它接受一个函数作为参数并记录该函数被调用的次数。每次调用装饰的函数时,__call__ 方法会被执行,从而增加计数器并打印调用次数。
# 定义一个类CountCalls,它将作为装饰器使用 class CountCalls: # 初始化方法,接收一个函数作为参数 def __init__(self, func): self.func = func # 将传入的函数保存为实例变量 self.count = 0 # 初始化计数器为0 # 定义__call__方法,使得实例可以像函数一样被调用 def __call__(self, *args, **kwargs): self.count += 1 # 每次调用时计数器增加1 # 打印函数被调用的次数 print(f"函数 {self.func.__name__} 被调用了 {self.count} 次") return self.func(*args, **kwargs) # 调用原函数并返回其返回值 # 使用CountCalls装饰器装饰say_hello函数 @CountCalls def say_hello(): print("Hello!") # 定义一个简单的打印"Hello!"的函数 say_hello() # 调用函数,计数器变为1 say_hello() # 再次调用函数,计数器变为2
执行结果:
函数 say_hello 被调用了 1 次
Hello!
函数 say_hello 被调用了 2 次
Hello!
参考 Python 装饰器,简单学一学 - 知乎
浙公网安备 33010602011771号