[python] ukončení interpretu, zničení objektu
Jan Janech
devel na atlas.sk
Úterý Červen 6 09:00:24 CEST 2006
Ja viem, ze globalne objekty uz mozu byt zrusene garbage collectorom,
ale ja som sa prave snazil ukazat ze u tej classy to tak nieje. Prave to
sa mi zda zvlastne, ze premenna ma nastavenu hodnotu None, ale objekt
triedy este existuje v pamati a moze byt referencovany... okrem toho,
pri tom ako je python spraveny si neviem predstavit ako by niekto chcel
zrusit najskor instanciu class objektu a az potom instanciu danej triedy...
Janko
Radek Kaňovský wrote:
> On Sun, Jun 04, 2006 at 11:43:56PM +0200, Jan Janech wrote:
>
>> Objekt triedy este nieje odstraneny, ale iba symbol M je nastaveny na
>> hodnotu None...
>> Dost zaujimave spravanie, po tom ako som si po dvoch rokoch zvykol, ze v
>> pythone vsetko ide ako ma :)
>>
>> class M:
>>
>> b = 0
>>
>> def __del__(self):
>>
>> print "self.class =", self.__class__
>>
>> print "M =", M
>>
>> print "M2 =", M2
>>
>> a2 = M()
>> M2 = M
>
> Ja myslim, ze tohle chovani je v poradku. Metoda __del__ se muze
> spolehnout v podstate jenom na jmeno `self'. Globalni objekty uz mohou
> byt odalokovane. Pokud potrebuju nejaky externi objekt v metode __del__,
> je potreba pouzit nejaky trik a objekt si "pribalit" k funkci:
>
> import sys
>
> class M:
>
> def __del__():
> _sys = sys # _sys je cellvar
> def __del__(self):
> print 'SYS', _sys
> __del__ = __del__()
>
> Radek Kaňovský
Další informace o konferenci Python