[Python-de] AW: [Python-de] Re: [Python-de] python objekt löschen

Andreas Trepel ATrepel at dspace.de
Thu Aug 9 09:34:30 EDT 2001


Hallo Leute,
wenn man mit der Methode del ein Objekt 'löschen' möchte, wird auch hier nur
die Referenz des Objekts um eins erniedriegt, dh. __del__ wird nicht
zwingend aufgerufen, sondern nur wenn die Referenz bei 0 angekommen ist. Das
kann man zB. an folgedem Beispiel erkennen:
d = {"x":1}
>>> e=d
>>> del d
>>> e
{'x': 1}
Das Dictionary besitzt zwei Referenzen, von der eine mit del gelöscht wird.
Daher sind die Methode del und die Zuweisung von None was das 'Löschen'
betrifft gleichwertig. 

Munter bleiben, Andreas


-----Ursprüngliche Nachricht-----
Von: Andreas Jung [mailto:andreas at zope.com]
Gesendet: Montag, 6. August 2001 17:55
An: python-de at starship.python.net
Betreff: [Python-de] Re: [Python-de] python objekt löschen


mit "del obj" löschst Du die Referenz, aber nicht durch "obj=None".
__del__() wird in dem Object aufgerufen, wenn es mit "del obj" zerstört
wird.

Andreas
Zope Corporation

----- Original Message -----
From: "Rene Freund" <rene at meder.de>
To: <python-de at starship.python.net>
Sent: Montag, 6. August 2001 10:58
Subject: [Python-de] python objekt löschen


Moin.

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?

thx, reen

----
Rene Freund                 nur ein toter bug ist ein guter bug
rene at meder.de


P.S. Wie immer scheine ich die interessanten infos zu übersehen. Sorry.
schreibt
mir!. Hab jetzt schluss. Schaue morgen nach.



(Das ganze passiert in wxPython. Hier der Code, wenn es jemand
 interessiert:

dest=destinationobject (ConCel instanz)

#                print "Connecting to base..."

self.link.append(dest.SetConnection(self,self.status,base[1]))


    def SetConnection(self,OtherConCel,status,formel):
        self.link.append([OtherConCel,status,formel])
#        print "Connection accepted by base"
        return self
_______________________________________________
Python-de maillist  -  Python-de at starship.python.net
http://starship.python.net/mailman/listinfo/python-de

_______________________________________________
Python-de maillist  -  Python-de at starship.python.net
http://starship.python.net/mailman/listinfo/python-de



More information about the Python-de mailing list