[Python-de] python objekt löschen

Georg Mischler schorsch at schorsch.com
Mon Aug 6 13:49:18 EDT 2001


Rene Freund wrote:

> Wenn ich eine selbsterstellte klasse löschen möchte, bzw. von hand
> verschiedene Variablen löschen möchte, wie fange ich das an???
>
> Problem:
>
> Ich habe ein Objekt, das sich mit anderen Objekten seiner Klasse
> verbindet, das heisst: es besitzt eine Referenz auf die anderen objekte
>
> self.OtherObj=OtherObj
>
> Wenn dann jedoch das Objekt gelöscht wird scheint python irgendwie
> nicht damit klarzukommen, das eines oder mehrere der Referenzobjekte
> schon gelöscht wurden.
>
> Ich denke, das löse ich dadurch, das ich die variable von hand auf
> None setze. War __del__ die Methode die beim löschen eines Objektes
> aufgerufen wird?

Du kannst in Python keine Objekte loeschen. Alles was du tun
kannst, ist Referenzen zu kappen. Wenn die letzte Referenz zu
einem Objekt verschwunden ist, dann fuehrt der Interpreter zuerst
die __del__ Methode (falls vorhanden) des Objektes aus, und gibt
danach den vom Objekt belegten Speicher wieder frei.  Ich vermute
uebrigens, dass du nicht wirklich eine Klasse "loeschen" mochtest,
sondern ein davon instantiiertes Objekt. Das ist nicht dasselbe!

Deine Beschreibung oben laesst nicht klar werden, woraus dein
Problem eigentlich besteht. Es ist systembedingt gar nicht
moeglich, dass ein Objekt auf "schon geloeschte Referenzeobjekte"
verweist. Solange es einen solchen Verweis gibt, existieren auch
diese Referenzobjekte noch. Dein Snippet verraet ebenfalls
nichts, worueber man sich konkret aeussern koennte.

Noch als Randbemerkung: Denk immer daran, dass zirkulaere
Verknuepfungen eine Freigabe vom Speicher verhindern, auch wenn
die fraglichen Objekte vom Rest des Codes nicht mehr erreichbar
sind. Diese Speicherlecks erkennst du daran, dass dein Programm
mit der Zeit immer mehr RAM aufsaugt. Mit Python 2.x aendert sich
da zwar einiges, damit habe ich mich aber noch nicht beschaeftigt.


Viel Spass!

-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch.com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/




More information about the Python-de mailing list