On Tue, Jun 06, 2006 at 09:00:24AM +0200, Jan Janech wrote: > 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...
On tu tridu nezrusi driv nez instanci, pouze neni trida dostupna pres nazev tridy z namespacu modulu. Pres `self.__class__' se da trida ziskat. Nekde se proste s rusenim referenci musi zacit. Radek Kaňovský > 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ý _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python