Iteraattoriprotokolla
Pyyhkäise näyttääksesi valikon
Pythonissa iteraattoriprotokolla on joukko metodeja, jotka mahdollistavat olioiden läpikäynnin, tehden niistä yhteensopivia esimerkiksi for-silmukoiden kanssa. Kaksi keskeistä metodia ovat __iter__ ja __next__. Kun käytät for-silmukkaa olion kanssa, Python kutsuu sisäisesti olion __iter__-metodia saadakseen iteraattorin. Tällä iteraattorilla täytyy olla __next__-metodi, joka palauttaa seuraavan alkion sekvenssistä aina kun sitä kutsutaan. Kun alkioita ei ole enää jäljellä, __next__-metodin tulee nostaa StopIteration-poikkeus ilmoittaakseen sekvenssin päättymisestä.
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__ – Alustusvaihe
Kun iteraattori luodaan, se saa:
-
limit→ kuinka monta lukua generoidaan; -
Asettaa
current = 0→ aloituspiste; -
Valmistelee kaiken tarvittavan iteraatiota varten.
__iter__ – Iteroitavaksi tekeminen
- Palauttaa
self(olion itsensä); - Tämä mahdollistaa olion käytön for-silmukassa.
__next__ – Arvojen tuottaminen
Tämä metodi suoritetaan aina, kun silmukka pyytää seuraavaa alkiota:
- Jos
current<limit:- Laske
current²; - Kasvata
currentyhdellä; - Palauta tulos.
- Laske
- Jos
current≥limit:- Nosta
StopIterationlopettaaksesi silmukan automaattisesti.
- Nosta
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme