Iterator-protokollen
Sveip for å vise menyen
I Python er iteratorprotokollen et sett med metoder som gjør det mulig å iterere over objekter, slik at de blir kompatible med konstruksjoner som for-løkker. De to essensielle metodene som inngår er __iter__ og __next__. Når du bruker en for-løkke på et objekt, kaller Python internt objektets __iter__-metode for å hente en iterator. Denne iteratoren må ha en __next__-metode, som returnerer neste element i sekvensen hver gang den kalles. Når det ikke er flere elementer igjen, må __next__ kaste et StopIteration-unntak for å signalisere slutten 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__ – Oppstartsfasen
Når iteratoren opprettes mottar den:
-
limit→ hvor mange tall som skal genereres; -
Setter
current = 0→ startpunktet; -
Forbereder alt som trengs for iterasjonen.
__iter__ – Gjør objektet itererbart
- Returnerer
self(objektet selv); - Dette gjør at du kan bruke det i en for-løkke.
__next__ – Produserer verdier
Denne metoden kjøres hver gang løkken ber om neste element:
- Hvis
current<limit:- Beregn
current²; - Øk
currentmed 1; - Returner resultatet.
- Beregn
- Hvis
current≥limit:- Kast
StopIterationfor å stoppe løkken automatisk.
- Kast
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår