イテレータプロトコル
メニューを表示するにはスワイプしてください
Pythonにおけるイテレータプロトコルは、オブジェクトを反復処理可能にするための一連のメソッドであり、forループなどの構文と互換性を持たせます。関与する2つの主要なメソッドは__iter__と__next__です。オブジェクトに対してforループを使用すると、Pythonは内部的にそのオブジェクトの__iter__メソッドを呼び出してイテレータを取得します。このイテレータは__next__メソッドを持っている必要があり、呼び出されるたびにシーケンス内の次の要素を返します。要素がなくなった場合、__next__はシーケンスの終了を示すためにStopIteration例外を発生させなければなりません。
1234567891011121314151617181920212223242526class SquaresIterator: # Initialize with the number of squares to generate def __init__(self, limit): self.limit = limit self.current = 0 # Return the iterator object (itself) def __iter__(self): return self # Return the next square, or stop if done def __next__(self): if self.current < self.limit: # Calculate square result = self.current ** 2 # Move to next number self.current += 1 return result # If no more items else: raise StopIteration for square in SquaresIterator(5): print(square)
__init__ - セットアップフェーズ
イテレータが作成されると、次の値を受け取ります:
-
limit→ 生成する数値の個数; -
current = 0を設定 → 開始位置; -
反復処理に必要な準備を行います。
__iter__ - イテラブルにするためのメソッド
self(オブジェクト自身)を返す;- これにより、forループで使用可能になる。
__next__ - 値の生成
このメソッドは、ループが次の要素を要求するたびに実行される:
current<limitの場合:current²を計算;currentを1増やす;- 結果を返す。
current≥limitの場合:- ループを自動的に停止するために
StopIterationを発生させる。
- ループを自動的に停止するために
すべて明確でしたか?
フィードバックありがとうございます!
セクション 5. 章 3
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 5. 章 3