En Wed, 07 Mar 2007 07:35:05 -0300, Erwan Adam <[EMAIL PROTECTED]> escribió:
> Can someone reproduce this bug ... I use : Same on 2.5 Windows. > class XObject(object): > > def __del__(self): > print "XObject.__del__" > return > > pass > > class A(XObject): > > def __del__(self): > print "A.__del__" > XObject.__del__(self) > return > > pass > > aaa = A() > ------ > A.__del__ > Exception exceptions.AttributeError: "'NoneType' object has no attribute > '__del__'" in <bound method A.__del__ of <__main__.A object at > 0xb7bb124c>> ignored Print XObject inside A.__del__ and you can see that it is None. That means that the XObject reference was set to None *before* aaa was deleted. Values inside the module namespace are set to None when it's destroyed (to break possible reference cycles, I presume). I can't find any place in the docs that guarantees any ordering on the object deletion, so I don't consider this a "bug". See the big notes on the __del__ method docs. If you *really* must do some cleanup on A.__del__, you can't trust on *any* globals, and you must store a reference to anything needed inside __del__ -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list