[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