Метод __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 автоматически итерировать по элементам ваших контейнерных классов.