Le mot clé with
permet de gérer une ressource en garantissant l'invocation d'une méthode d'acquisition et d'une autre de
libération de cette ressource.
Quelques règles sont à respecter pour l'implémentation de la ressource :
Elle doit être basée sur approche objet : il faut donc définir une classe pour le type de ressources considéré.
Cette classe doit fournir une méthode __enter__
.
La méthode sera invoquée automatiquement lors de la déclaration de la ressource via le mot clé with
.
La méthode doit obligatoirement renvoyer l'instance en cours (return self
).
En l'absence de cette valeur de retour, la ressource nouvellement créée via le mot clé with
, ne sera pas accessible dans le programme.
Elle doit aussi fournir une méthode __exit__
.
Cette méthode sera invoquée automatiquement lors de la libération de la ressource.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/usr/bin/python3 class MyResource(object): def __enter__(self): print("ressource engagée") return self def do_something(self): print("Do something") def __exit__(self, exc_type, exc, traceback): print("ressource libérée") if __name__ == '__main__': with MyResource() as r: r.do_something() |
Pour lancer cet exemple, veuillez procéder ainsi :
$> python3 TestWithKeyword.py ressource engagée Do something ressource libérée $>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :