__del__ not called?

Felipe Almeida Lessa felipe.lessa at gmail.com
Mon Mar 13 02:59:53 EST 2006


Em Seg, 2006-03-13 às 08:21 +0100, Gregor Horvath escreveu:
> Hi,
> 
> I do not understand why __del__ does not get executed in the following 
> example.

It only collects when there are no references:

>>> class A(object):
...     def __init__(self):
...             print "A's init"
...     def __del__(self):
...             print "A's del"
...
>>> a = A()
A's init
>>> del a
A's del
>>> class B(object):
...     a = A()
...
A's init
>>> del B
>>> # We'll to tell him to collect the garbage here, but
... # usually it should not be necessary.
... import gc
>>> gc.collect()
A's del
20
>>>

-- 
"Quem excele em empregar a força militar subjulga os exércitos dos
outros povos sem travar batalha, toma cidades fortificadas dos outros
povos sem as atacar e destrói os estados dos outros povos sem lutas
prolongadas. Deve lutar sob o Céu com o propósito primordial da
'preservação'. Desse modo suas armas não se embotarão, e os ganhos
poderão ser preservados. Essa é a estratégia para planejar ofensivas."

  -- Sun Tzu, em "A arte da guerra"




More information about the Python-list mailing list