Junior — Middle
58
Когда именно происходит активация метода __iter__ в процессе итерации по объекту?
Answer from AI
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__ для получения элементов.