super not working in __del__ ?
Duncan Booth
duncan.booth at invalid.invalid
Wed Feb 16 04:15:07 EST 2005
Fredrik Lundh wrote:
> in this case,
>
> def __del__(self):
> super(self.__class__, self).__del__()
>
> should do the trick.
Only if nobody ever tries to subclass your class, and if they aren't going
to subclass it why bother to use super in the first place.
>>> class Base(object):
def __del__(self):
print "Base.__del__"
>>> class A(Base):
def __del__(self):
print "A.__del__"
super(self.__class__, self).__del__()
>>> class B(A):
def __del__(self):
print "B.__del__"
super(self.__class__, self).__del__()
>>> a = A()
>>> del a
A.__del__
Base.__del__
>>>
>>> b = B()
>>> del b
B.__del__
A.__del__
A.__del__
A.__del__
A.__del__
A.__del__
... and so on ...
I don't see any easy way to ensure that the __del__ method gets passed up
the chain safely.
More information about the Python-list
mailing list