Utilisation du mot clé with
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 :