PaliSkill
Python avancé

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