Iterator-Protokollen
Stryg for at vise menuen
I Python er iteratorprotokollen et sæt metoder, der gør det muligt at iterere over objekter, så de kan bruges med konstruktioner som for-løkker. De to væsentlige metoder, der indgår, er __iter__ og __next__. Når du bruger en for-løkke på et objekt, kalder Python internt objektets __iter__-metode for at hente en iterator. Denne iterator skal have en __next__-metode, som returnerer det næste element i sekvensen, hver gang den kaldes. Når der ikke er flere elementer, skal __next__ udløse en StopIteration-undtagelse for at signalere slutningen af sekvensen.
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__ – Opsætningsfase
Når iteratoren oprettes, modtager den:
-
limit→ hvor mange tal der skal genereres; -
Den sætter
current = 0→ startpunktet; -
Den forbereder alt nødvendigt til iterationen.
__iter__ - Gør objektet itererbart
- Returnerer
self(selve objektet); - Dette muliggør brug i en for-løkke.
__next__ - Generering af værdier
Denne metode køres hver gang løkken anmoder om det næste element:
- Hvis
current<limit:- Beregn
current²; - Forøg
currentmed 1; - Returner resultatet.
- Beregn
- Hvis
current≥limit:- Udløs
StopIterationfor automatisk at stoppe løkken.
- Udløs
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat