Objekt löschen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
reggid
User
Beiträge: 120
Registriert: Dienstag 8. Oktober 2002, 19:04
Wohnort: Dinslaken
Kontaktdaten:

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]
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

mit del.

Code: Alles auswählen

del variablen/objektname
und weg isses...

zu den listen: ja, no problem.
reggid
User
Beiträge: 120
Registriert: Dienstag 8. Oktober 2002, 19:04
Wohnort: Dinslaken
Kontaktdaten:

wau das war eine schnelle antwort !
Danke für deine Hilfe ! :shock: 8)
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten