Python Glossary English

все Python 3Итераторы и генераторыфункция

__iter__

протокол итератора

Метод, который вызывает iter(obj) и цикл for: возвращает итератор по объекту.

Синтаксис

def __iter__(self): ...

У итерируемого объекта __iter__ каждый раз возвращает новый итератор, поэтому список можно обходить много раз. У самого итератора __iter__ возвращает self — так итератор тоже годится для for, но проходится один раз. Удобный способ написать __iter__ — сделать его генератором через yield.

Примеры

class Countdown:
    def __init__(self, n):
        self.n = n
    def __iter__(self):
        for i in range(self.n, 0, -1):
            yield i
c = Countdown(3)
print(list(c))  # → [3, 2, 1]
print(list(c))  # → [3, 2, 1] — новый итератор при каждом обходе

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности