我正在尝试使用带有 Python 类的生成器,它的工作方式与链表有些相似。
这是我的意思的一个非常简单的例子:
class GeneratorTest():
def __init__(self, list):
if list:
self.elem = list[0]
if list[1:]:
self.n = GeneratorTest(list[1:])
else:
self.n = None
def __iter__(self):
return self
def next(self):
my_next = self
while my_next is not None:
yield my_next
my_next = my_next.n
当然这只是一个例子,但足以说明这一点。
现在,我期待能够调用类似的东西:
g = GeneratorTest([1,2,3,4,5])
for x in g:
print x
并在达到最后一个值时停止循环,但 for 循环只是无休止地继续。
我对生成器很陌生,所以我确信这是我在这里缺少的基本前提。
问题是否与我产生与创建生成器的对象相同的事实有关?我确信如果我有一个包含 GeneratorTest 对象列表的对象,我可以非常简单地返回这些对象中的每一个,但我觉得应该有一种方法可以在没有“包装”对象的情况下完成这项工作。
我在这里想念什么?