python – 将参数传递给装饰器,以便为类方法进行修饰
发布时间:2020-12-20 11:26:09 所属栏目:Python 来源:网络整理
导读:我试图在flask中定义一个装饰器,最后将装饰传递该类实例参数的类方法.这是我真正想要做的一个例子. from functools import wrapsdef user_permission(myname): def decorator(f): @wraps(f) def decorated(*args,**argws): if myname == 'My Name': return f
我试图在flask中定义一个装饰器,最后将装饰传递该类实例参数的类方法.这是我真正想要做的一个例子.
from functools import wraps def user_permission(myname): def decorator(f): @wraps(f) def decorated(*args,**argws): if myname == 'My Name': return f(*args,**argws) else: return "Not Permitted" return decorated return decorator 我的经理类定义为: class Manager(flask.views.MethodView): def __init__(self,name): self.name = name @user_permission(self.my_name) def post(self): return "Response" def get(self): return "Response" 我想要做的是将类变量传递给装饰器.是的“自我”在那时没有定义,但“@ decorator.user_permission(self.my_name)”是我实际尝试的,因为我还没有解决我的问题. 我找不到HERE的解决方案. 解决方法
正如你所说,那时候没有定义自我.这可能永远不会起作用,因为在定义类时会执行装饰器,而在调用实例方法时需要运行某些东西.
但是我觉得你真的太复杂了. self被传递给方法本身.所以没有理由尝试将它作为装饰器的参数,因为装饰器可以访问方法参数.这会简单得多: from functools import wraps def user_permission(): @wraps(f) def decorated(self,*args,**kwargs): if self.myname == 'My Name': return f(self,**kwargs) else: return "Not Permitted" return decorated (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |