首页 新闻 会员 周边 捐助

类作为装饰器时

0
[已解决问题] 解决于 2025-08-14 17:51

工作原理基于 Python 的两个关键机制:

类的实例化过程(init

实例的可调用性(call

_java_python的主页 _java_python | 小虾三级 | 园豆:1050
提问于:2025-08-14 14:18
< >
分享
最佳答案
0
class Decorator:
    def __init__(self, func):  # 接收被装饰函数
        self.func = func
    
    def __call__(self, *args, **kwargs):  # 替代 wrapped
        print("Before call")
        result = self.func(*args, **kwargs)
        print("After call")
        return result

@Decorator
def say_hello():
    print("Hello!")

@Decorator 触发 Decorator(say_hello) → 调用 init

创建实例并保存原函数 self.func = say_hello

调用 say_hello() 时实际调用实例的 call 方法

_java_python | 小虾三级 |园豆:1050 | 2025-08-14 14:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册