Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Что возвращает метод __iter__()?

Проверяет понимание протокола итерации в Python и того, что должен возвращать метод __iter__ для создания итератора.

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

Метод __iter__() должен возвращать объект итератора. Этот итератор, в свою очередь, должен иметь метод __next__(), который возвращает следующий элемент последовательности или выбрасывает исключение StopIteration, когда элементы заканчиваются. Если объект сам является итератором, он может возвращать self.

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

Что возвращает метод __iter__()?

Метод __iter__() является частью протокола итерации в Python. Он вызывается, когда мы используем функцию iter() или когда объект используется в цикле for. Основная задача этого метода — вернуть объект итератора, который будет последовательно предоставлять элементы.

Протокол итерации

Протокол итерации состоит из двух методов:

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

Объект, который реализует __iter__(), называется итерируемым (iterable). Итератор — это объект, который реализует и __iter__(), и __next__().

Пример кода

class MyRange:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        # Возвращаем сам объект, так как он сам является итератором
        return self

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

# Использование
for num in MyRange(1, 4):
    print(num)  # Вывод: 1, 2, 3

В этом примере MyRange является итератором, поэтому __iter__() возвращает self. Если бы мы хотели разделить итерируемый объект и итератор, мы бы создали отдельный класс итератора.

Вывод

Метод __iter__() всегда возвращает итератор. Это основа для работы циклов for и генераторов в Python. Понимание этого метода необходимо для создания собственных итерируемых объектов и эффективной работы с последовательностями данных.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Python

    Python

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

#__iter__

#iterator

#iterable

#Python

#protocol

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

  • Аватар

    Python Guru

    Sergey Filichkin

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