(所以我正在尝试学习python。我认为阅读比我更好的人的代码会很好。我决定通读电子邮件模块......)
init
模块中 Feedparser 类的函数email.feedparser
定义为:
def __init__(self, _factory=message.Message):
"""_factory is called with no arguments to create a new message obj"""
self._factory = _factory
self._input = BufferedSubFile()
self._msgstack = []
self._parse = self._parsegen().next
self._cur = None
self._last = None
self._headersonly = False
我遇到的问题是:
self._parse = self._parsegen().next
我认为应该意味着'将属性设置为方法返回值的属性self._parse
值next
self._parsegen()
据我所知,self._parsgen()
在调用期间__init__()
将首先调用self._new_message()
它将设置/添加值到self._cur
,self._last
和self._msgstack
. 然后它将一个空列表对象分配给局部变量headers
,然后开始迭代该self._input
对象。我认为 for 的第一个值line
将是一个NeedMoreData
对象。由于NeedMoreData
该类只是扩展对象,因此它应该没有名为的属性或方法next
。那么是否next
只是指回迭代器(self._input
)?
有什么办法可以在解释器中查看这个,以便我可以单步执行脚本的每一行?