__del__ not called?

Gregor Horvath g.horvath at gmx.at
Mon Mar 13 03:50:02 EST 2006


Duncan Booth schrieb:

> What is less obvious is that new style classes always include circular 
> references, so a class is never detroyed until the garbage collector runs. 

Thanks. I tried the same example with old style classes and A.__del__ 
gets correctly called.

> Of course, if your __del__ method actually does get invoked during program 
> exit you have to be pretty careful what you do: the chances are any global 
> variables you used in __del__ have already been destroyed in particular any 
> modules you imported may have been deleted. In short, don't rely on 
> anything much being possible from __del__ called this way.

I wanted to close a database connection, which is opend by __init__.

But what happens to my database connection (instance attributes of A) 
when __del__ is never called?

--
Greg



More information about the Python-list mailing list