Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> writes:

> On Tue, 25 Mar 2008 14:58:51 +0000, Edward A. Falk wrote:
>
>> In article <[EMAIL PROTECTED]>,
>> Patrick Mullen <[EMAIL PROTECTED]> wrote:
>> 
>>>Then again, I can count the number of times I have ever needed __del__
>>>with no fingers (never used it!).  Still, quite interesting to
>>>explore.
>> 
>> I used it once, for an object that had a doubly-linked list.
>> The __del__() method walked the list, setting all the elements'
>> prev/next pointers to None to make sure the elements of the list would
>> get garbage-collected.
>
> Without the `__del__()` the elements would get garbage collected just
> fine.

It gets even worse than that: the __del__ method actually *prevents*
objects that participate in cycles from getting garbage-collected.
Python's GC doesn't deallocate objects that define __del__.  (The way
to handle those is to grep for them in gc.garbage, break the cycles in
a way that works for the application -- e.g. by removing the prev and
next references -- and finally del gc.garbage[:].)
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to