Sobes.tech
Junior — Middle
59

Когда именно происходит активация метода __iter__ в процессе итерации по объекту?

Ответ от нейросети

sobes.tech AI

Метод __iter__ в Python вызывается в момент, когда начинается итерация по объекту, например, при использовании цикла for. Конкретно, когда интерпретатор встречает конструкцию for element in obj:, он вызывает obj.__iter__() для получения итератора.

Этот итератор должен реализовывать метод __next__, который возвращает следующий элемент последовательности. Итерация продолжается, пока __next__ не вызовет исключение StopIteration.

Пример:

class MyRange:
    def __init__(self, n):
        self.n = n
    def __iter__(self):
        self.current = 0
        return self
    def __next__(self):
        if self.current < self.n:
            val = self.current
            self.current += 1
            return val
        else:
            raise StopIteration

for i in MyRange(3):
    print(i)

Здесь при входе в цикл вызывается MyRange(3).__iter__(), который возвращает объект-итератор (в данном случае сам объект), и затем вызывается __next__ для получения элементов.