El Protocolo de Iterador
Desliza para mostrar el menú
En Python, el protocolo de iterador es un conjunto de métodos que permite que los objetos sean iterados, haciéndolos compatibles con construcciones como los bucles for. Los dos métodos esenciales involucrados son __iter__ y __next__. Cuando se utiliza un bucle for sobre un objeto, Python llama internamente al método __iter__ del objeto para obtener un iterador. Este iterador debe tener un método __next__, que devuelve el siguiente elemento de la secuencia cada vez que se llama. Cuando no hay más elementos, __next__ debe lanzar una excepción StopIteration para señalar el final de la secuencia.
1234567891011121314151617181920212223242526class SquaresIterator: # Initialize with the number of squares to generate def __init__(self, limit): self.limit = limit self.current = 0 # Return the iterator object (itself) def __iter__(self): return self # Return the next square, or stop if done def __next__(self): if self.current < self.limit: # Calculate square result = self.current ** 2 # Move to next number self.current += 1 return result # If no more items else: raise StopIteration for square in SquaresIterator(5): print(square)
__init__ - Fase de configuración
Cuando se crea el iterador, recibe:
-
limit→ cuántos números generar; -
Establece
current = 0→ el punto de inicio; -
Prepara todo lo necesario para la iteración.
__iter__ - Haciendo el objeto iterable
- Devuelve
self(el propio objeto); - Esto es lo que permite usarlo en un bucle for.
__next__ - Producción de valores
Este método se ejecuta cada vez que el bucle solicita el siguiente elemento:
- Si
current<limit:- Calcular
current²; - Incrementar
currenten 1; - Devolver el resultado.
- Calcular
- Si
current≥limit:- Lanzar
StopIterationpara detener el bucle automáticamente.
- Lanzar
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla