Il Protocollo degli Iteratori
Scorri per mostrare il menu
In Python, il protocollo degli iteratori è un insieme di metodi che consente agli oggetti di essere iterati, rendendoli compatibili con costrutti come i cicli for. I due metodi essenziali coinvolti sono __iter__ e __next__. Quando si utilizza un ciclo for su un oggetto, Python richiama internamente il metodo __iter__ dell'oggetto per ottenere un iteratore. Questo iteratore deve avere un metodo __next__, che restituisce l'elemento successivo della sequenza ogni volta che viene chiamato. Quando non ci sono più elementi, __next__ deve sollevare un'eccezione StopIteration per segnalare la fine della sequenza.
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 di inizializzazione
Quando viene creato l'iteratore, riceve:
-
limit→ quanti numeri generare; -
Imposta
current = 0→ il punto di partenza; -
Prepara tutto il necessario per l'iterazione.
__iter__ - Rendere un oggetto iterabile
- Restituisce
self(l'oggetto stesso); - Questo permette di utilizzarlo in un ciclo for.
__next__ - Produzione dei valori
Questo metodo viene eseguito ogni volta che il ciclo richiede il prossimo elemento:
- Se
current<limit:- Calcola
current²; - Incrementa
currentdi 1; - Restituisce il risultato.
- Calcola
- Se
current≥limit:- Solleva
StopIterationper terminare automaticamente il ciclo.
- Solleva
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione