Sobes.tech
Back to questions
Junior — Middle
62

Каким образом следует реализовать методы внутри собственного класса для обеспечения его возможности итерирования?

Answer from AI

sobes.tech AI

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

Простой способ — сделать класс сам итератором, реализовав оба метода:

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

    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)

Альтернативно, __iter__ может возвращать отдельный итератор, например, используя генератор:

def __iter__(self):
    for item in self.data:
        yield item

Это более простой и часто предпочтительный способ.