使用类作为装饰器来装饰另一个类中的方法

时间:2018-08-28 13:14:21

标签: python python-2.7 decorator python-decorators

我正在编写将在class Foo方法上使用的装饰器。像这样:

class decorator(object):
    def __init__(self,func):
        self.func = func

    def __call__(self,*args,**kwargs):
        result = self.func(*args,**kwargs)
        # Do stuff
        return result

class Foo(object):
    def __init__(self,arg):
        self.arg = arg

    def load(cls,cfg):
        # construct object
        return cls(arg)

    @decorator      
    def bar(self,x):
        # run method
        return self

运行代码时,它显示为TypeError: bar() takes exactly 2 arguments (1 given)

该方法的调用方式如下:

def process(cls,cfg,x):
    obj = cls.load(cfg)
        if obj:
            return obj.bar(x)

但是,如果我使用函数定义装饰器,它似乎可以工作。

我在做什么错了?

0 个答案:

没有答案