Назад к вопросам
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.