Назад к вопросам
Junior
67
questionbank

За что отвечает метод iter в Python?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

Метод __iter__ в Python отвечает за возвращение итератора для объекта. Если объект имеет этот метод, он считается итерируемым (iterable). Итератор, возвращаемый __iter__, должен реализовывать метод __next__, который возвращает следующий элемент контейнера или выбрасывает исключение StopIteration, когда элементы закончились.

Пример:

class MyCollection:
    def __init__(self, data):
        self.data = data
    
    def __iter__(self): # Возвращает итератор для экземпляра класса
        return iter(self.data)

# Использование итератора:
collection = MyCollection([1, 2, 3])
iterator = iter(collection) # Вызывает collection.__iter__()

print(next(iterator)) # Вызывает iterator.__next__() -> 1
print(next(iterator)) # Вызывает iterator.__next__() -> 2
print(next(iterator)) # Вызывает iterator.__next__() -> 3

try:
    print(next(iterator))
except StopIteration:
    print("Iteration stopped.")

# Цикл for неявно использует __iter__ и __next__:
print("Using for loop:")
for item in collection: # Сначала вызывается collection.__iter__(), затем итеративно next()
    print(item)

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