Sobes.tech
Back to questions
Junior — Middle
57

Каким образом реализовать возможность перебора элементов объекта как этого объекта, чтобы он стал итерируемым в Python?

Answer from AI

sobes.tech 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.