Sobes.tech
Junior — Middle
98

Que funções um objeto deve implementar para que possa ser percorrido com um ciclo in em Python?

Empresas quando solicitadas
AstonAston

Resposta da IA

sobes.tech IA

Чтобы объект можно было обходить с помощью цикла 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__() позволяет объекту быть итерируемым.