Python3のclassに反復処理をサポートさせる
classに__iter__と__next__メソッドを実装することで、反復処理をサポートさせることができます。 反復処理をサポートしたclassは、for文などに対してiterable objectとして与えることが可能です。
コード
# 反復処理をサポートしたクラス class iter_sample: def __init__(self): self.cnt = 0 self.data = ["yamada", "tanaka", "suzuki"] # __iter__()と__next__()を実装したオブジェクトを返すメソッド def __iter__(self): # ここでは自分自身を返せばOK return self # 次のアイテムを返すメソッド。反復処理が実行されるたびに呼ばれる。 def __next__(self): if self.cnt >= len(self.data): # これ以上アイテムが無い場合は必ずStopIterationをraiseすること raise StopIteration ret = self.data[self.cnt] self.cnt += 1 return ret # 使用例 if __name__ == "__main__": sample = iter_sample() for i in sample: print(i) # 実行結果 # yamada # tanaka # suzuki