帮助一个人。似乎无法让装饰器处理继承。将其分解为我的临时工作空间中最简单的小示例。似乎仍然无法正常工作。
class bar(object): def __init__(self): self.val = 4 def setVal(self,x): self.val = x def decor(self, func): def increment(self, x): return func( self, x ) + self.val return increment class foo(bar): def __init__(self): bar.__init__(self) @decor def add(self, x): return x
糟糕,名称“ decor”未定义。
好吧,怎么样@bar.decor?TypeError:未绑定的方法“ decor”必须以bar实例作为第一个参数调用(取而代之的是功能实例)
@bar.decor
好吧,怎么样@self.decor?未定义名称“ self”。
@self.decor
好吧,怎么样@foo.decor?未定义名称“ foo”。
@foo.decor
AaaaAAaAaaaarrrrgggg …我在做什么错?
定义decor为静态方法并使用以下形式@bar.decor:
decor
class bar(object): def __init__(self): self.val = 4 def setVal(self,x): self.val = x @staticmethod def decor(func): def increment(self, x): return func(self, x) + self.val return increment class foo(bar): def __init__(self): bar.__init__(self) @bar.decor def add(self, x): return x