【发布时间】:2015-10-09 12:04:01
【问题描述】:
在我的模型中,我有一个 class 包含一个相当通用的函数,它调用一个高阶函数。我整理了一个简单的例子:
class AClass(object):
def __init__(self, prop, fun):
self.prop = prop
self.fun = fun
def do_sth(self):
self.fun()
def namely_this_(context):
print 2*context.prop
obj1 = AClass(3, namely_this_)
obj1.do_sth()
这个 sn-p 包含所有要知道的内容,请注意,它可以通过以下方式继续:
def namely_this_2(self):
print 4*self.prop
obj2 = AClass(2, namely_this_2)
obj2.do_sth()
上面的代码没有运行,而是抛出了一个
TypeError: namely_this_() takes exactly 1 argument (0 given)
相反,我必须将do_sth 更改为
def do_sth(self):
self.fun(self) # the *self* in the parenthesis added
问题:namely_this_ 与类中定义的函数有何不同?我的解决方法是可行的解决方案吗?
【问题讨论】: