python – 成员函数装饰器和自我参数
发布时间:2020-12-16 22:27:35 所属栏目:Python 来源:网络整理
导读:以下关于成员函数的装饰器的最小示例: def wrap_function(func): def wrapper(*args,**kwargs): print(args) print(kwargs) return wrapperclass Foo: @wrap_function def mem_fun(self,msg): passfoo = Foo()foo.mem_fun('hi') 输出: ( 所以自我就是其中
以下关于成员函数的装饰器的最小示例:
输出:
所以自我就是其中的一个. 但是在使用包装类时:
输出是:
因此,引用Foo对象的self不能在WrappedFunction对象的__call__体中访问. 我怎样才能在那里访问它? 最佳答案
通过包装函数逻辑(但不是实例)并将其重定向到类实例,您将丢失对有界实例的引用 – 此时,类实??例自己应用而不是包装的实例方法,因为它在中间装饰器(wrap_function()).
您要么必须将调用包装到包装函数并将* args / ** kwargs传递给它,要么只是创建一个正确的包装类而不是添加中间包装器:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |