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 装饰器,简单学一学 - 知乎
posted @ 2025-05-14 13:11  我的腹肌不见了  阅读(28)  评论(0)    收藏  举报