Le Protocole d'Itérateur
Glissez pour afficher le menu
En Python, le protocole d'itérateur est un ensemble de méthodes qui permet aux objets d'être parcourus, les rendant compatibles avec des constructions telles que les boucles for. Les deux méthodes essentielles impliquées sont __iter__ et __next__. Lorsque vous utilisez une boucle for sur un objet, Python appelle en interne la méthode __iter__ de l'objet pour obtenir un itérateur. Cet itérateur doit posséder une méthode __next__, qui retourne l'élément suivant de la séquence à chaque appel. Lorsqu'il n'y a plus d'éléments, __next__ doit lever une exception StopIteration pour signaler la fin de la séquence.
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__ – Phase d'initialisation
Lors de la création de l'itérateur, il reçoit :
-
limit→ combien de nombres à générer ; -
Il définit
current = 0→ le point de départ ; -
Il prépare tout ce qui est nécessaire pour l'itération.
__iter__ - Rendre l'objet itérable
- Retourne
self(l'objet lui-même) ; - C'est ce qui permet de l'utiliser dans une boucle for.
__next__ - Produire des valeurs
Cette méthode s'exécute à chaque fois que la boucle demande l'élément suivant :
- Si
current<limit:- Calculer
current²; - Incrémenter
currentde 1 ; - Retourner le résultat.
- Calculer
- Si
current≥limit:- Lever l'exception
StopIterationpour arrêter automatiquement la boucle.
- Lever l'exception
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion