Ich muss ein dateiähnliches Objekt in Python öffnen (es ist eine serielle Verbindung über / dev /) und es dann schließen. Dies geschieht mehrmals in verschiedenen Methoden meiner Klasse. Ich habe die Datei im Konstruktor geöffnet und dann im Destruktor geschlossen. Ich bekomme allerdings seltsame Fehler und ich denke, das hat mit dem Garbage Collector zu tun. Ich bin es immer noch nicht gewohnt, nicht genau zu wissen, wann meine Objekte gelöscht werden = \
Der Grund, warum ich das getan habe, ist, dass ich tcsetattr
jedes Mal, wenn ich es öffne, eine Reihe von Parametern verwenden muss und es nervig wird, all das überall zu tun. Ich möchte also eine innere Klasse implementieren, um all das zu handhaben, damit ich sie verwenden kann
with Meter('/dev/ttyS2') as m:
Ich habe online gesucht und konnte keine wirklich gute Antwort darauf finden, wie die with
Syntax implementiert ist. Ich habe gesehen, dass es die __enter__(self)
und __exit(self)__
Methoden verwendet. Aber ist alles, was ich tun muss, um diese Methoden zu implementieren, und ich kann die mit Syntax verwenden? Oder steckt noch mehr dahinter?
Gibt es entweder ein Beispiel dafür oder eine Dokumentation darüber, wie es bereits auf Dateiobjekten implementiert ist, die ich mir ansehen kann?
def __enter__(self): return self
Wenn Sie einen Verweis aufMeter
den with-Block wünschen .