Het Iteratorprotocol
Veeg om het menu te tonen
In Python is het iteratorprotocol een set methoden waarmee objecten kunnen worden geïtereerd, waardoor ze compatibel zijn met constructies zoals for-lussen. De twee essentiële methoden zijn __iter__ en __next__. Wanneer je een for-lus gebruikt op een object, roept Python intern de __iter__-methode van het object aan om een iterator op te halen. Deze iterator moet een __next__-methode hebben, die bij elke aanroep het volgende item in de reeks retourneert. Wanneer er geen items meer zijn, moet __next__ een StopIteration-exceptie opwerpen om het einde van de reeks aan te geven.
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__ – Initialisatiefase
Wanneer de iterator wordt aangemaakt, ontvangt deze een:
-
limit→ hoeveel getallen er gegenereerd moeten worden; -
Stelt
current = 0in → het beginpunt; -
Bereidt alles voor wat nodig is voor iteratie.
__iter__ - Het object iterabel maken
- Retourneert
self(het object zelf); - Dit maakt het mogelijk om het object te gebruiken in een for-lus.
__next__ - Waarden genereren
Deze methode wordt uitgevoerd telkens wanneer de lus om het volgende item vraagt:
- Als
current<limit:- Bereken
current²; - Verhoog
currentmet 1; - Retourneer het resultaat.
- Bereken
- Als
current≥limit:- Genereer
StopIterationom de lus automatisch te stoppen.
- Genereer
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.