【发布时间】:2011-03-01 09:03:32
【问题描述】:
帮助一个人。似乎无法让装饰器与继承一起工作。将其分解为我的暂存工作区中最简单的小示例。似乎仍然无法正常工作。
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: unbound method "decor" must be called with a bar instance as first argument (得到函数实例)
好的,@self.decor 怎么样?名称“self”未定义。
好的,@foo.decor 怎么样?!名称“foo”未定义。
AaaaAAAaAaaaarrrrgggg...我做错了什么?
【问题讨论】:
-
在您的示例中,您可以在
foo中使用return x + self.val来定义add。你不能在你的实际代码中这样做吗? -
这是一个精炼的示例代码,突出了我所面临的问题。如果代码那么简单,那么是的。然而,事实并非如此。
标签: python inheritance decorator