リンクリストと同じように機能する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オブジェクトのリストを含むオブジェクトがあれば、これらの各オブジェクトを非常に簡単に返すことができると確信していますが、「ラッパー」オブジェクトなしでこれを機能させる方法があるはずだと思います。
ここで何が欠けていますか?