Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: iterator, protocol, magic method

Какие магические методы нужно реализовать для создания итератора?

Проверяет знание протокола итераторов в Python и их реализацию.

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

Для создания итератора нужно реализовать два метода:

  1. __iter__() — возвращает сам объект итератора.

  2. __next__() — возвращает следующее значение. Когда элементы закончились, вызывает исключение StopIteration.

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

Итератор — объект, который позволяет перебирать элементы коллекции по одному. Для его создания в Python используются магические методы:

  • __iter__
    Должен вернуть сам объект итератора. Вызывается один раз в начале цикла for.

  • __next__
    Возвращает следующий элемент. Если элементов нет, вызывает StopIteration, что сигнализирует о конце перебора.

Пример реализации:

class Counter:
    	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  # Элементы закончились
        	self.current += 1
        	return self.current - 1

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

Как это работает в цикле for:

  1. Вызывается __iter__() для получения итератора.

  2. На каждой итерации вызывается __next__().

  3. При StopIteration цикл прерывается.

Вывод:
Итераторы полезны для обработки больших данных (например, чтение файла построчно), так как не загружают всё в память сразу.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Python

    Python

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

#iterator

#protocol

#magic method

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

  • Аватар

    Python Guru

    Sergey Filichkin

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