Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: iterator, iterable

Какие методы должен поддерживать итерируемый объект или последовательность в Python?

Вопрос проверяет понимание протокола итерации и того, какие методы делают объект итерируемым или последовательностью.

Короткий ответ

Итерируемый объект должен реализовывать метод __iter__, который возвращает итератор. Итератор, в свою очередь, должен реализовывать методы __iter__ и __next__. Последовательности часто дополнительно реализуют __len__ и __getitem__, что позволяет итерироваться по ним даже без явного __iter__. Python может использовать __getitem__, начиная с индекса 0, пока не получит исключение IndexError.

Длинный ответ

Что делает объект итерируемым

В Python существует так называемый протокол итерации. Объект считается итерируемым, если он реализует метод:

  • __iter__() — возвращает итератор

Итератор — это объект, который реализует:

  • __iter__() — возвращает сам себя

  • __next__() — возвращает следующий элемент или возбуждает StopIteration

Пример простого итератора:

class Counter:
    def __init__(self, limit):
        self.limit = limit
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.limit:
            raise StopIteration
        self.current += 1
        return self.current

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

Последовательность может не реализовывать __iter__, но поддерживать:

  • __getitem__(index)

  • __len__()

В этом случае Python будет запрашивать элементы по индексам начиная с 0.

Пример:

class SimpleSeq:
    def __getitem__(self, index):
        if index >= 3:
            raise IndexError
        return index * 10

Вывод

Чтобы объект был итерируемым, обычно достаточно реализовать __iter__. Для последовательностей также важно поддерживать доступ по индексу и длину. Это позволяет использовать объект в циклах for, генераторах и встроенных функциях.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Python

    Python

Ключевые слова

#iterator

#iterable

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.