(所以我正在尝试学习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值nextself._parsegen()
据我所知,self._parsgen()在调用期间__init__()将首先调用self._new_message()它将设置/添加值到self._cur,self._last和self._msgstack. 然后它将一个空列表对象分配给局部变量headers,然后开始迭代该self._input对象。我认为 for 的第一个值line将是一个NeedMoreData对象。由于NeedMoreData该类只是扩展对象,因此它应该没有名为的属性或方法next。那么是否next只是指回迭代器(self._input)?
有什么办法可以在解释器中查看这个,以便我可以单步执行脚本的每一行?