Sobes.tech
Junior — Middle

Quando exatamente o método __iter__ é ativado durante a iteração sobre um objeto?

sobes.tech IA

Resposta da IA

O método __iter__ em Python é chamado no momento em que começa a iteração sobre um objeto, por exemplo, ao usar um ciclo for. Especificamente, quando o interpretador encontra a construção for element in obj:, ele chama obj.__iter__() para obter um iterador.

Este iterador deve implementar o método __next__, que devolve o próximo elemento da sequência. A iteração continua até que __next__ lance a exceção StopIteration.

Exemplo:

class MyRange:
    def __init__(self, n):
        self.n = n
    def __iter__(self):
        self.current = 0
        return self
    def __next__(self):
        if self.current < self.n:
            val = self.current
            self.current += 1
            return val
        else:
            raise StopIteration

for i in MyRange(3):
    print(i)

Aqui, ao entrar no ciclo, é chamado MyRange(3).__iter__(), que devolve um objeto-iterador (neste caso, o próprio objeto), e então __next__ é chamado para obter os elementos.