Python Create Iterator
イテレータを作成する
イテレータとしてオブジェクト/クラスを作成するには、メソッド
__iter__()
と
__next__()
オブジェクトを実装する必要があります。
Pythonのクラス/オブジェクトの章で学習したように、すべてのクラスには
__init__()
、オブジェクトの作成時に初期化を行うことができる、という関数があります。
__iter__()
メソッドは同様に動作し、操作(初期化など)を実行できますが、常にイテレータオブジェクト自体を返す必要があります。
この__next__()
メソッドでは、操作を実行することもでき、シーケンス内の次のアイテムを返す必要があります。
例
1から始まる数値を返すイテレータを作成すると、各シーケンスが1つ増えます(1、2、3、4、5などを返します)。
class MyNumbers:
def __iter__(self):
self.a =
1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))