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.