Sobes.tech
Back to questions
Junior — Middle
56

Какие функции должен реализовывать объект, чтобы его можно было обходить с помощью цикла in в Python?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

Чтобы объект можно было обходить с помощью цикла for ... in в 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):
            result = self.data[self.index]
            self.index += 1
            return result
        else:
            raise StopIteration

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

Таким образом, наличие методов __iter__() и __next__() позволяет объекту быть итерируемым.