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.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to