El método __iter__
en Python tiene un propósito claro: devuelve un iterador para el objeto contenedor. Este método, junto con __next__
, es fundamental para entender la concepto de iteradores en Python.
Los iteradores en Python son objetos que se pueden iterar (o recorrer) en un bucle. Para hacer un objeto iterable, se necesita definir el método __iter__
en su clase. Este método debe devolver un objeto que implementa el método __next__
que se llamará para obtener el siguiente valor en el iterador.
Aquí tienes un ejemplo simple de cómo se utiliza:
class MiRango:
def __init__(self, max):
self.max = max
def __iter__(self):
self.num = 0
return self
def __next__(self):
if self.num >= self.max:
raise StopIteration
self.num += 1
return self.num
mi_rango = MiRango(5)
for i in mi_rango:
print(i)
En este ejemplo, MiRango
es un objeto contenedor e iterable. Cuando se recorre mi_rango en un bucle for, Python llama al método __iter__
, que devuelve self
. Luego, para cada iteración en el bucle, Python llama al método __next__
para obtener el siguiente valor. Cuando se llega al final del rango, se lanza la excepción StopIteration, lo que indica que ya no hay más números para iterar y que el bucle debe parar.
Es recomendable emplear el método __iter__
solo en objetos que son naturalmente contenedores de otros objetos, siguiendo así las mejores prácticas de diseño orientado a objetos en Python.
Como práctica adicional, puedes intentar implementar tus propios contenedores utilizando __iter__
y __next__
para entender más a fondo cómo funcionan los iteradores.
En conclusión, el método __iter__
en Python es fundamental para permitir la iteración de un objeto, lo que facilita la manipulación y el acceso a los elementos individuales de un objeto contenedor.