Sobes.tech
Junior — Middle

Hoe implementeer je de mogelijkheid om de elementen van een object te doorlopen alsof dit object zelf door te lopen is, zodat het in Python iterabel wordt?

sobes.tech AI

Antwoord van AI

Чтобы сделать объект итерируемым в Python, нужно реализовать метод __iter__, который возвращает итератор. Итератор — это объект с методом __next__, который возвращает следующий элемент или вызывает StopIteration, когда элементы закончились.

Пример простого итерируемого объекта:

class MyIterable:
    def __init__(self, data):
        self.data = data

    def __iter__(self):
        self.index = 0
        return self

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        value = self.data[self.index]
        self.index += 1
        return value

obj = MyIterable([1, 2, 3])
for item in obj:
    print(item)

В этом примере объект MyIterable сам является итератором. Можно также сделать __iter__ возвращающим отдельный итератор, если нужно.

Таким образом, реализовав __iter__ и __next__, объект становится итерируемым и поддерживает перебор в циклах for.