Je dois ouvrir un objet de type fichier en python (il s'agit d'une connexion série via /dev/) et le fermer ensuite. Ceci est fait plusieurs fois dans plusieurs méthodes de ma classe. La façon dont je le faisais était d'ouvrir le fichier dans le constructeur, puis de le fermer dans le destructeur. Je reçois des erreurs bizarres et je pense que c'est lié au garbage collector et autres, je ne suis pas encore habitué à ne pas savoir exactement quand mes objets sont supprimés =\N
La raison pour laquelle j'ai fait cela est que je dois utiliser tcsetattr
avec un tas de paramètres à chaque fois que je l'ouvre et cela devient ennuyeux de faire tout cela partout. Je veux donc implémenter une classe interne pour gérer tout cela afin que je puisse l'utiliser en faisantwith Meter('/dev/ttyS2') as m:
J'ai cherché en ligne et je n'ai pas trouvé de réponse vraiment satisfaisante sur la façon dont la with
est mise en œuvre. J'ai vu qu'elle utilisait l'élément __enter__(self)
y __exit(self)__
des méthodes. Mais est-ce qu'il me suffit d'implémenter ces méthodes pour pouvoir utiliser la syntaxe "with" ? Ou est-ce qu'il y a plus que cela ?
Existe-t-il un exemple sur la façon de procéder ou une documentation sur la façon dont cela est mis en œuvre sur les objets fichiers que je puisse consulter ?