Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Créer un context manager
Un context manager, c'est un objet qui definit un contexte d'execution. Tu l'utilises avec le mot-cle with. L'exemple le plus courant est l'ouverture de fichier :
with open('fichier.txt') as f: contenu = f.read()
Le with garantit que le fichier sera ferme, meme si une erreur survient. C'est comme avoir un assistant qui range toujours derriere toi.
Pour créer ton propre context manager, ta classe doit definir deux méthodes : __enter__(self) : exécutée au debut du bloc with. Ce qu'elle renvoie est assigne a la variable apres as. __exit__(self, exc_type, exc_val, exc_tb) : exécutée a la fin du bloc with, meme en cas d'erreur. Les trois paramètres contiennent les infos sur l'erreur eventuelle (ou None s'il n'y en a pas).
Écris une classe Timer qui mesure le temps d'execution du bloc with. Dans __enter__, stocke le temps de depart. Dans __exit__, calcule la duree et stocke-la dans self.duree. La classe doit utiliser time.time() pour mesurer le temps.
Exemple : import time t = Timer() with t: time.sleep(0.1) t.duree donne environ 0.1 (un float positif)
Tests (4/4)
Duree positive
import time
t = Timer()
with t:
time.sleep(0.05)
assert t.duree > 0
Duree raisonnable
import time
t = Timer()
with t:
time.sleep(0.05)
assert t.duree < 1