具有参数的基于类的修饰器如何在实例之前修饰函数?

我有一个装饰类,可以装饰一个函数。以下代码可以正常工作

    class class_deco():
        def __init__(self,num3,num4):
        self.num3=num3
        self.num4=num4

        def __call__(self,func):
             def a_(*args,**kwargs):
                o=self.num3*4
                p=self.num4+2
                return func(o,p,*args)
            return a_

c=class_deco(2,3)

@c 
def b(o,x,*args):
    value=((o+2)*(p+20)*x)+10
    return value

print(b(2))

另一方面,我想在装饰函数之后制作装饰类的实例

class class_deco():
    def __init__(self,num4):
        self.num3=num3
        self.num4=num4
       .
       .
       . 
       .      
    return a_

@class_deco 
def b(o,*args):
    value=((o+2)*(p+20)*x)+10
    return value

c=class_deco(2,3)
print(c.b(2)) 

当然,这会返回错误,因为装饰类没有收到任何参数。

  

a_deco()缺少1个必需的位置参数:'num4'

我读过其他文章,例如 Decorating Python class methods - how do I pass the instance to the decorator?

但是我不确定如何将参数合并到此答案代码中

有人告诉我如何用不带实例的装饰类来装饰函数。

ttzzhhssjjnn 回答:具有参数的基于类的修饰器如何在实例之前修饰函数?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3103625.html

大家都在问