It seems like this is mostly a non-issue. The original code actually works correctly (of course the updated versions that solve the exception problem are probably better). The only thing that is going haywire is the interpreter shutdown process. I think it is going a bit overboard to "consider __del__ harmful" because it might throw an exception as the program is quitting. It is important to not rely on __del__ too much but there can be some designs where you need to know when something is gone, and you don't know exactly where or when something is deleted.
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. -- http://mail.python.org/mailman/listinfo/python-list