用装饰器类装饰的方法没有冻结“self”参数
发布时间:2020-12-16 22:19:29 所属栏目:Python 来源:网络整理
导读:我有一个装饰器声明为一个类: class predicated(object): def __init__(self,fn): self.fn = fn self.fpred = lambda *args,**kwargs: True def predicate(self,predicate): self.fpred = predicate return self def validate(self,*args,**kwargs): return
我有一个装饰器声明为一个类:
…当我用它来包装类中的方法时,调用该方法似乎并没有将对象的实例设置为第一个参数.虽然这种行为并不完全出乎意料,但当方法成为实例方法时,如何让自我被冻结? 简化示例:
foo的预期实例,而是得到一个错误,说0参数被传递. 最佳答案
想出来 – 需要定义一个__get__方法,以便像这样创建一个MethodType绑定:
在冻结self参数的对象上调用方法时创建一个MethodType对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |