Leçon 2 / 10 — Chapitre 5: Itérateurs, générateurs et context managers
Créer un itérateur personnalisé
Une classe peut implémenter __iter__ et __next__ elle-même, pour devenir utilisable directement dans une boucle for — exactement comme une liste ou une chaîne de caractères.
class Compteur:
def __init__(self, limite):
self.limite = limite
self.actuel = 0
def __iter__(self):
return self
def __next__(self):
if self.actuel >= self.limite:
raise StopIteration
self.actuel = self.actuel + 1
return self.actuel
for n in Compteur(3):
print(n)
Ce code affiche 1, 2, puis 3. __iter__ renvoie self (l'objet est son propre itérateur, un choix courant pour un itérateur simple) ; __next__ incrémente self.actuel et le renvoie, jusqu'à atteindre self.limite, où elle lève StopIteration (vue à la leçon précédente) pour signaler la fin.
La boucle for n in Compteur(3): fonctionne sans aucune modification, exactement comme sur une liste : Python appelle __iter__ puis __next__ en boucle jusqu'à StopIteration, sans savoir ni se soucier qu'il s'agit d'une classe personnalisée plutôt que d'un type intégré.
À vous de jouer : écrivez une classe Compteur avec __iter__ et __next__, et parcourez-la avec une boucle for jusqu'à une limite de votre choix.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 87 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès