__del__ doesn't work
Duncan Booth
me at privacy.net
Mon Feb 16 05:38:37 EST 2004
PeterAbel at gmx.net (Peter Abel) wrote in
news:21064255.0402151141.51a38fed at posting.google.com:
> But the statements
> import gc
>
> and
>
> gc.collect()
>
> should assure that when the reference counter goes to zero
> some time the __del__ method is executed.
If the class is involved in a cycle, then the __del__ method is never
called.
The garbage collector will simply refuse to collect any objects which have
__del__ methods. The reason for this is quite simple: if A and B refer to
each other, and both have __del__ methods, which class should be released
first? Python refuses to guess, so neither is released.
The garbage collector can trigger a __del__ method when some objects are in
a cycle and none of them have __del__ methods; then the cycle may be
released and if this causes some other objects to lose their last reference
then they will be released and associated __del__ methods called.
More information about the Python-list
mailing list