It seems that this happens only on runtime exit (because DerivativeClass
is None
).
This works fine:
class BaseClass(object):
def __del__(self):
print 'BaseClass->Destructor'
class DerivativeClass(BaseClass):
def __del__(self):
print 'DerivativeClass->Destructor'
super(DerivativeClass, self).__del__()
instance = DerivativeClass()
del instance
And this works fine too:
class BaseClass(object):
def __del__(self):
print 'BaseClass->Destructor'
class DerivativeClass(BaseClass):
def __del__(self):
print 'DerivativeClass->Destructor'
super(type(self), self).__del__()
instance = DerivativeClass()
Also this:
class BaseClass(object):
def __del__(self):
print 'BaseClass->Destructor'
class DerivativeClass(BaseClass):
def __del__(self):
print 'DerivativeClass->Destructor'
super(DerivativeClass, self).__del__()
def someScope ():
instance = DerivativeClass()
someScope ()
In snippets 1 and 3, I make sure that the instance dies before the class. In snippet 2 I circumnavigate the whole issue in quite an ugly manner.