Python lambda 表达式中的 "self
def buildTestCase(xmlfile, description, method, evalString):
func = lambda self, xmlfile=xmlfile, method=method, evalString=evalString: \
method(self, evalString, feedparser.parse(xmlfile))
func.__doc__ = description
return func
上面是来自feedparser的代码片段,为什么在函数定义中有一个“self”呢,比如在这个方法定义:method(self, evalString, feedparser.parse(xmlfile))?
谢谢。
3 个回答
2
这个lambda表达式的用法跟类里面的方法差不多。这里的self
代表的是类的一个实例,跟其他方法里的self
是一样的意思。
3
方法可以通过它所属的类来调用,方法调用时需要把这个类的一个实例作为第一个参数传进去。因为在普通方法中,第一个参数通常叫做 self
,所以这里也保持这个叫法。
>>> class C(object):
... def foo(self):
... print 42
...
>>> c = C()
>>> C.foo(c)
42
7
self
只是指代一个叫 self
的 lambda 函数的第一个参数。
名字 self
并不是一个保留字,它只是 Python 程序员之间的一种约定,用来命名函数所作用的对象实例。在这里,作者把 self
作为 lambda 的第一个参数,因为这个参数会接收一个对象实例,而这个 lambda 函数会在这个对象实例上执行名为 method
的方法。