python – 将参数传递给装饰器,以便为类方法进行修饰

python – 将参数传递给装饰器,以便为类方法进行修饰,第1张

概述我试图在flask中定义一个装饰器,最后将装饰传递该类实例参数的类方法.这是我真正想要做的一个例子. from functools import wrapsdef user_permission(myname): def decorator(f): @wraps(f) def decorated(*args,**argws): if 我试图在flask中定义一个装饰器,最后将装饰传递该类实例参数的类方法.这是我真正想要做的一个例子.

from functools import wrapsdef 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 wrapsdef user_permission():    @wraps(f)    def decorated(self,*args,**kwargs):        if self.myname == 'My name':            return f(self,**kwargs)        else:            return "Not Permitted"    return decorated
总结

以上是内存溢出为你收集整理的python – 将参数传递给装饰器,以便为类方法进行修饰全部内容,希望文章能够帮你解决python – 将参数传递给装饰器,以便为类方法进行修饰所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1192780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存