入出力・エラーと例外・クラス・標準ライブラリ・対話環境(7,8,9,10,14章)
イテレータプロトコルに関する説明として、正しいものはどれか。
- Aイテレータであるためには__getitem__()メソッドのみを実装していればよく、__next__()は不要である
- ✓イテレータオブジェクトは__iter__()と__next__()メソッドを実装し、要素がなくなると__next__()がStopIteration例外を送出する
- Cリストや辞書などのイテラブルなオブジェクトには、イテレータプロトコルは一切関係しない
- D__next__()メソッドは呼び出すたびに常に同じ要素を返し続ける
解説
イテレータは__iter__()(自分自身を返す)と__next__()(次の要素を返す、なければStopIterationを送出する)を実装したオブジェクトである。for文はこのプロトコルを利用して要素を順に取り出している。
根拠9章 クラス(イテレータ)