Wie würde ich einen Contextmanager für Instanzvariablen verwenden? Z.B.
Nehmen wir an, ich habe eine Connection
-Klasse, die bei der Zerstörung geschlossen werden muss. Wenn ich es als ContextManager implementieren würde, könnte ich tun.
und es würde automatisch wegen Zerstörung geschlossen. Aber was, wenn ich es in __init__
einer anderen Klasse verwenden wollte, z.B. wie das folgende Beispiel?
Ich möchte nicht, dass es beim Beenden des Konstruktors geschlossen wird, es sollte sterben, wenn das Objekt zerstört wird. Ich könnte __del__
verwenden, aber das hat Nachteile. Wenn ich an RAII in C ++ gewöhnt bin, verblüfft es mich.
Was ist der beste Weg, dies in diesem Fall zu tun?
Sie sollten self.connection.close
in Ihrer Device.close()
-Methode aufrufen und dann dafür sorgen, dass das in Ihrem Programm richtig aufgerufen wird, vielleicht mit einem Kontextmanager.
__del__
ist es nie wert.
Tags und Links python with-statement destructor