snafu hat geschrieben:Ich weiß nur eins: Programmierer, die fest davon überzeugt sind, einen Weg gefunden zu haben, um den Lebenszyklus von Objekten zu kontrollieren, um quasi eine manuelle Speicherverwaltung in Python zu realisieren, werden sich eines Tages mal ganz böse in den Fuß damit schießen.
Der Lebenszyklus ist genau definiert und steht in der Python Dokumentation. Und dort steht auch, dass der Referenzcounter bei del erniedrigt wird:
Note
del x doesn’t directly call x.__del__() — the former decrements the reference count for x by one, and the latter is only called when x‘s reference count reaches zero.
Quelle:
https://docs.python.org/3/reference/datamodel.html
Ist also alles dokumentiert und spezifiziert.
Und hier kann man auch sehen, dass die Dokumentation nicht in das Detail geht:
Deletion is recursively defined very similar to the way assignment is defined. Rather than spelling it out in full details, here are some hints.
Quelle:
https://docs.python.org/3/reference/sim ... -statement
Wer sich das nicht selber denken kann, der glaubt anscheinend etwas Falsches.
Und wenn Ihr bisher nur statische Anwendungen programmmiert habt, dann mußtet Ihr Euch um die Lebenszeit von Referenzen noch keine Gedanken machen, denn mit Programmende ist alles weg. Wenn Ihr allerdings während der Laufzeit Widgets löscht und nicht nur tkinter callbacks einsetzt sondern auch eigene - ich hatte message Callbacks implementiert - dann habt Ihr dafür zu sorgen, dass diese Referenzen mit Löschen des zugeordneten Widgets verschwinden, denn sonst habt Ihr einen Crash, wenn der Callback für die Widgets noch da ist, die Widgets allerdings nicht mehr. Del braucht es nicht immer, denn wenn die Referenz in einem dictionary oder einer Liste steht, genügt auch ein pop().