我有一个装饰类,可以装饰一个函数。以下代码可以正常工作
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?
但是我不确定如何将参数合并到此答案代码中
有人告诉我如何用不带实例的装饰类来装饰函数。