阅读您的编辑后,也许您可以修改返回任意数量文本的流对象?例如,在该stream.next()方法中,流以某种方式生成一个字符串,并yields在何时.next()调用它。你能做类似的事情:
def next(self):
if '\n' in self.remaining:
terms = self.remaining.split('\n')
to_yield, self.remaining = terms[0], ''.join(terms[1:])
yield to_yield
else:
to_yield = self.remaining + self.generate_arbitrary_string()
while '\n' not in to_yield:
to_yield += self.generate_arbitrary_string()
to_yield, self.remaining = terms[0], ''.join(terms[1:])
yield to_yield
此伪代码假定流对象生成一些任意字符串,带有generate_arbitrary_string(). 在您第一次调用 时next(),self.remaining字符串应该为空,因此您转到else语句。在那里,您连接任意字符串,直到找到一个newline字符,在第一个字符处拆分连接的字符串newline,产生前半部分并将后半部分存储在remaining.
在随后的 调用中next(),您首先检查是否self.remaining包含任何newline字符。如果是这样,产生第一行并存储其余的。如果不是,则追加一个新的任意字符串self.remaining并像上面一样继续。