Sobes.tech
Back to questions
Junior — Middle
69

Какова роль специальных методов с двойным подчеркиванием в реализации итераторов в Python?

Answer from AI

sobes.tech AI

В Python специальные методы с двойным подчеркиванием (так называемые dunder-методы) играют ключевую роль в реализации итераторов. Для создания итератора в классе нужно определить методы:

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

Пример:

class CountUpTo:
    def __init__(self, max):
        self.max = max
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.max:
            self.current += 1
            return self.current
        else:
            raise StopIteration

for number in CountUpTo(5):
    print(number)

Таким образом, dunder-методы __iter__ и __next__ позволяют объектам вести себя как итераторы, поддерживая протокол итерации в Python.