1
messense 2013-01-02 18:52:18 +08:00
直接调用 self._func() 的话,python 应该是优先查找 self 里面有没有 _func 这个方法,它发现没有,所以就出错了。
|
2
messense 2013-01-02 18:56:40 +08:00
试试
def callDerivedFunc(self): getattr(self, '_func')(self) |
4
yuelang85 2013-01-02 19:23:54 +08:00
self._func = Bar.hello
这一行将Bar类的hello函数赋值给self._func变量,而不是实例的hello函数,而hello函数是一个实例方法。 method(self)调用没有错误,是因为给Bar.hello传递了一个实例,相当于:Bar.hello(bar) self._func()调用出错,是因为没有Bar.hello传递实例,相当于:Bar.hello()。所以会报错:"TypeError: unbound method hello() must be called with Bar instance as first argument (got nothing instead)" 修改方法: def __init__(self): super(Foo, self).__init__() self._func = Bar.hello 改成: def __init__(self): super(Foo, self).__init__() self._func = self.hello 同时: method(self) 改成: method() 或者: self._func() # wrong 改成: self._func(self) # wrong |
5
yuelang85 2013-01-02 19:31:20 +08:00
|
6
yuelang85 2013-01-02 19:38:22 +08:00
|