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)