Jack Bates wrote: > Python's __del__ or destructor method works (above) - but only in the > absence of reference cycles (below). An object, with a __del__ method, > in a reference cycle, causes all objects in the cycle to be > "uncollectable". This can cause memory leaks and because the object is > never collected, its __del__ method is never called
AIUI there is no guarantee that __del__() will be called automatically at all: <http://docs.python.org/reference/datamodel.html#object.__del__> > Faced with the real potential for reference cycles, how can you reliably > call code - but wait until an object no longer exists or is > "unreachable"? For normal program termination, the solution is the `atexit' module (as used e.g. in <http://code.activestate.com/recipes/523007-semi-automatic-resource- management-with-autoclose/>, however it is considered better style to explicitly call methods that free resources, and `del' object references. As for abnormal program termination, I think there is no way to deal with signals that signal.signal() cannot handle. HTH -- PointedEars -- http://mail.python.org/mailman/listinfo/python-list