Seite 1 von 1

Objekt löschen

Verfasst: Montag 18. November 2002, 21:42
von reggid
Hallo ich bins wieder :D :oops:

Also ich habe ein Objekt und ei Objet ist ja nichts anderes als eine ansammlung von Variablen und Funktionen.
Wenn ich nur 2 Objekte vom selben Type habe, dann brauch ich auch 2mal den Speicherplatz, oder nicht?
Ich brauche jetzt aber nurnoch das zuletzt erzeugte Objekt, wie kann ich das eine Objekt löschen und den Speicher freigen ?

Ach ja, kann ich eigentlich auch eine Liste von Objekten erzeugen also

Code: Alles auswählen

liste=[ob1,ob2,ob3]

Verfasst: Montag 18. November 2002, 21:47
von Milan
mit del.

Code: Alles auswählen

del variablen/objektname
und weg isses...

zu den listen: ja, no problem.

Verfasst: Montag 18. November 2002, 21:52
von reggid
wau das war eine schnelle antwort !
Danke für deine Hilfe ! :shock: 8)

Re: Objekt löschen

Verfasst: Donnerstag 21. Oktober 2021, 11:20
von __blackjack__
Da dieses Thema an anderer Stelle als Argumentation für ``del`` == manuelle Speicherverwaltung verwendet wurde: Nein, ``del`` auf Namen angewendet löscht keine Objekte. Man kann in Python nicht explizit und zuverlässig Objekte löschen. Darum kümmert sich die automatische Speicherverwaltung, wobei die auch nur recht wenige Garantien gibt. Ein nicht mehr vom Programm aus erreichbares Objekt wird vielleicht, irgendwann einmal gelöscht. Weder Zeitpunkt, noch ob es in jedem Fall überhaupt passiert, ist von der Sprachspezifikation garantiert.

``del`` auf Namen angewendet, verwendet man um den *Namen* zu löschen. Das ist manchmal, aber wirklich nur sehr selten sinnvoll. Zum Beispiel wenn man auf Modulebene Code stehen hat der Konstanten erstellt und dabei zur besseren Verständlichkeit Namen für Zwischenergebnisse entstehen, die danach nicht mehr gebraucht werden und die API von dem Modul nicht vollmüllen sollen.

Der automatischen Speicherverwaltung greift man am besten unter die Arme, in dem man das Programm nicht auf Modulebene oder in einer riesigen Funktion stehen hat, sondern es sinnvoll auf kleinere Funktionen aufteilt, deren lokale Namen nach Abarbeitung automatisch verschwinden, und damit auch Referenzen auf dann ungenutzte Zwischenergebnisse.