0

我需要了解如何访问传递给装饰器中函数的变量。

让我用一个例子来解释一下,是否可以做这样的事情:

class test(object):
    ....
    @DecoratorClass(myWrapper(self, x))
    def myFunction(self, x):
        print x
        print self.y

test-class在某些时候,会创建一个实例,并myFunction从某处调用。我需要将相同的参数传递给myWrapper.

我希望这已经足够清楚了。

4

1 回答 1

0

装饰器用包装它的可调用函数替换函数,因此可调用函数将传递与原始函数相同的参数。因此,例如:

def Decorator(original_function):
  def replacement_function(x):
    # You now have 'x' here... do what you want with it.
  return replacement_function

@Decorator
def MyFunction(x):
   # ...

请注意,您需要延迟“myWrapper”的构建,直到函数执行(因为在此之前您将没有函数参数)。

于 2013-01-30T09:49:29.373 回答