whe*_*ies 17 python inheritance decorator
帮助一个人.似乎无法让装饰器与继承一起工作.将其分解为我的临时工作空间中最简单的小例子.仍然似乎无法让它工作.
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
Run Code Online (Sandbox Code Playgroud)
哎呀,名字"装饰"没有定义.
好的,怎么样@bar.decor?TypeError:必须使用bar实例作为第一个参数调用未绑定方法"decor"(获取函数实例)
好的,怎么样@self.decor?名称"self"未定义.
好的,怎么样@foo.decor?!名称"foo"未定义.
AaaaAAaAaaaarrrrgggg ...我做错了什么?
Pär*_*der 20
定义decor为静态方法并使用以下形式@bar.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
Run Code Online (Sandbox Code Playgroud)