Sobes.tech
Junior — Middle
98

¿Cuándo exactamente se activa el método __iter__ durante la iteración sobre un objeto?

Respuesta de la IA

sobes.tech AI

El método __iter__ en Python se llama en el momento en que comienza la iteración sobre un objeto, por ejemplo, al usar un bucle for. Específicamente, cuando el intérprete encuentra la construcción for element in obj:, llama a obj.__iter__() para obtener un iterador.

Este iterador debe implementar el método __next__, que devuelve el siguiente elemento de la secuencia. La iteración continúa hasta que __next__ lance la excepción StopIteration.

Ejemplo:

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)

Aquí, al entrar en el ciclo, se llama a MyRange(3).__iter__(), que devuelve un objeto-iterador (en este caso, el mismo objeto), y luego se llama a __next__ para obtener los elementos.