Python obsługuje mechanizm iteracji w ramach elementów typów pojemnikowych. Mechanizm ten jest zaimplementowany z wykorzystaniem dwóch metod. Dzięki temu klasy zdefiniowane przez użytkownika mogą obsługiwać iteracje. Sekwencje, opisane w dalszej części podręcznika, automatycznie udostępniają metody iteracyjne.
W celu implementacji mechanizmu iteracji w pojemniku, należy zdefiniować w jego klasie metodę __iter__:
Obiekty iteratorów muszą natomiast implementować następujące dwie metody, stanowiące tak zwany protokół iteracyjny:
Python definiuje kilka obiektów iteratorów obsługujących iterację w obiektach typów ogólnych oraz sekwencyjnych, słownikach i innych, bardziej specjalizowanych formach. Konkretne typy nie w tym momencie są istotne poza ich implementacją protokołu iteracyjnego.
Jednym z założeń protokołu iteracyjnego jest konsekwentne wywoływanie wyjątku StopIteration w przypadku, gdy wyjątek ten był już raz wywołany dla danego iteratora w wyniku wywołania metody next(). Implementacje nie przestrzegające tej zasady są uznawane za błędne. Wymóg ten został dodany w wersji 2.3 języka Python. W jej myśl wiele implementacji iteratorów w Pythonie 2.2 jest błędnych.
Zajrzyj do Informacji na temat tej publikacji... aby pomóc w jej rozwoju.