Iterator — это объект, который реализует iterator protocol, обеспечивая последовательный доступ к элементам по одному.
Iterator должен реализовать ровно два метода:
__iter__() — возвращает self, что делает итератор также итерируемым объектом__next__() — возвращает следующее значение в последовательности или вызывает StopIteration, когда последовательность исчерпанаclass Counter:
def __init__(self, limit):
self.limit = limit
self.current = 0
def __iter__(self):
return self # returns self
def __next__(self):
if self.current >= self.limit:
raise StopIteration
self.current += 1
return self.current
Важное различие, которое стоит отметить:
__iter__(), который возвращает объект-итератор__iter__() и __next__()Например, list — это итерируемый объект, но не итератор: вызов __iter__() на нём возвращает отдельный объект list iterator.
Итератор должен реализовать оба метода __iter__() и __next__(), где __iter__() возвращает self, а __next__() либо возвращает следующее значение, либо выбрасывает исключение StopIteration.
Новый — ещё не проверен сообществом
Вы