Python 2.7 接受参数的类装饰器
我一直在努力理解这个类装饰师:Python 2.7 接受参数的类装饰器,python-2.7,python-decorators,Python 2.7,Python Decorators,我一直在努力理解这个类装饰师: class MyClassDecorator: def __init__(self, *a, **kw): self.conf_args = a self.conf_kw = kw def __call__(self, func): def wrapper(*args, **kwargs): return func(*args, **kwargs) retu
class MyClassDecorator:
def __init__(self, *a, **kw):
self.conf_args = a
self.conf_kw = kw
def __call__(self, func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
@MyClassDecorator('arg1')
def mysum(x,y):
return x+y
装饰后,mysum通过以下方式成为MyDecoratorClass的对象:
mysum = MyDecorator('arg1')(mysum)
那么它是如何接受参数的,因为mysum按照上述协议变得call,并且它只接受func本身的一个参数,即传递给mysum的变量是如何传递给call函数的??请告诉我,这方面缺乏资料。我知道了
mysum = MyDecorator('arg1')(mysum)
第一步是:
Mydecorator('arg1')
,这将提供一个decorator对象,该对象立即被mysum函数调用。调用响应并返回
接受参数*args和**kwargs的包装器函数。这就是参数可用的方式。所以本质上,mysum(x,y)被wrapper(*args,
**kwargs)