Метод __iter__ в Python – это важная часть механизма итерирования, который Python предлагает для работы с коллекциями элементов.
Согласно ответу на этот вопрос, метод __iter__ предназначен для возврата итератора для контейнерного объекта. Это значит, что когда вы хотите перебрать элементы в контейнере (например, список, словарь или имя класса), Python автоматически вызывает метод __iter__ этого объекта, чтобы получить итератор.
Итератор – это объект, который определяет метод __next__, который возвращает следующий элемент в коллекции. Без __iter__ мы не сможем перебирать элементы в контейнере.
Давайте рассмотрим простой пример, который показывает, как работает __iter__.
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
В этом примере мы определяем класс MyNumbers, который определяет методы __iter__ и __next__. Метод __iter__ возвращает объект итератора, в данном случае – объект класса MyNumbers. Метод __next__ возвращает следующее число в последовательности.
Стандартная практика при работе с итераторами в Python – это использование метода __iter__ совместно с __next__, что позволяет Python автоматически итерировать по элементам ваших контейнерных классов.