Python lambda 表达式中的 "self

5 投票
3 回答
10789 浏览
提问于 2025-04-17 06:20
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 的方法。

撰写回答