Non riesco a richiamare il distruttore della classe Parent dal distruttore della classe Child. Vi preghiamo di controllare il codice qui sotto:Python: impossibile richiamare il distruttore della classe parent con super()
class BaseClass(object):
def __del__(self):
print 'BaseClass->Destructor'
class DerivativeClass(BaseClass):
def __del__(self):
print 'DerivativeClass->Destructor'
#Invoke destructor of the base class, it works
BaseClass.__del__(self)
#Doesn't work
#super(DerivativeClass, self).__del__()
instance = DerivativeClass()
Quando uso super(DerivativeClass, self).__del__()
in DerivativeClass.__del__()
ho ottenuto il seguente errore:
Exception TypeError: 'must be type, not None' in <bound method
DerivativeClass.__del__ of <__main__.DerivativeClass object at 0xb73a682c>> ignored
DOMANDA:
Perché non posso usare super
in il distruttore della classe figlio mentre è perfettamente a posto nel costruttore della classe bambino?
Non sono sicuro della ragione esatta, ma si noti che 'super (DerivativeClass, self)' restituisce un oggetto di tipo 'super', non un'istanza di' BaseClass'. '__del__' probabilmente fa qualche ipotesi sul suo primo argomento che non è valido per gli oggetti' super'. – chepner
Metti un 'print (DerivativeClass)' davanti a 'super ...' e vedrai cosa sta succedendo. – Hyperboreus
Oppure aggiungi un 'del instance' come ultima riga al tuo codice per assicurarti che l'istanza venga gettata via prima che la classe passi sopra il Giordano. – Hyperboreus