Проверяет понимание протокола итерации в Python и того, что должен возвращать метод __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. Понимание этого метода необходимо для создания собственных итерируемых объектов и эффективной работы с последовательностями данных.