Iteratorprotokollet
Svep för att visa menyn
I Python är iteratorprotokollet en uppsättning metoder som gör det möjligt för objekt att itereras över, vilket gör dem kompatibla med konstruktioner som for-loopar. De två grundläggande metoderna som används är __iter__ och __next__. När du använder en for-loop på ett objekt anropar Python internt objektets __iter__-metod för att hämta en iterator. Denna iterator måste ha en __next__-metod, som returnerar nästa objekt i sekvensen varje gång den anropas. När det inte finns fler objekt måste __next__ utlösa ett StopIteration-undantag för att signalera slutet på 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__ – Initieringsfas
När iteratorn skapas tar den emot:
-
limit→ hur många tal som ska genereras; -
Den sätter
current = 0→ startvärdet; -
Den förbereder allt som behövs för iterationen.
__iter__ – Gör objektet itererbart
- Returnerar
self(själva objektet); - Det är detta som möjliggör användning i en for-loop.
__next__ – Genererar värden
Denna metod körs varje gång loopen begär nästa element:
- Om
current<limit:- Beräkna
current²; - Öka
currentmed 1; - Returnera resultatet.
- Beräkna
- Om
current≥limit:- Kasta
StopIterationför att automatiskt avsluta loopen.
- Kasta
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal