[python] ukončení interpretu, zničení objektu

Radek Kaňovský rk na dat.cz
Úterý Červen 6 06:25:43 CEST 2006


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