Check

Контракт итерабельности и протокол последовательностей

Python Senior Яндекс
Назовите способы сделать объект итерируемым. В чём разница между реализацией `__iter__` и протоколом последовательности через `__len__` + `__getitem__`?
Ответы
Итерируемость
Объект считается итерируемым, если: - реализует метод `__iter__`, возвращающий итератор; или - реализует протокол последовательности: `__len__` и `__getitem__` с индексами от 0. Современный, «правильный» способ — реализовать `__iter__`. Протокол последовательности — более старый и поддерживается ради совместимости. Реализация `__iter__` даёт больше контроля и не требует индексной семантики.