[python] ukončení interpretu, zničení objektu
Radek Kaňovský
rk na dat.cz
Úterý Červen 6 09:21:00 CEST 2006
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ý
Další informace o konferenci Python