ile ana sınıfı yıkıcıyı çağırma Üst sınıfın yok edicisini Çocuk sınıfının yıkıcısından çağırmıyorum. , aşağıdaki kodu kontrol edin: Ben DerivativeClass.__del__()
içinde super(DerivativeClass, self).__del__()
kullandığınızdaPython: 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()
aşağıdaki hata var:
Exception TypeError: 'must be type, not None' in <bound method
DerivativeClass.__del__ of <__main__.DerivativeClass object at 0xb73a682c>> ignored
SORU:
Neden içinde super
kullanamıyorum Çocuk sınıfının kurucusunda mükemmel derecede ince iken çocuk sınıfının yıkıcısı mı?
Tam nedenlerden emin değilim, ancak 'super (DerivativeClass, self)' 'super' türünde bir nesne döndürdüğünü, 'BaseClass'ın bir örneğini döndürmediğini unutmayın. '__del__' muhtemelen' süper 'nesneler için geçerli olmayan ilk argümanı hakkında bazı varsayımlar yapar. – chepner
'süper ... 'nin önüne bir' print (DerivativeClass) 'yazın ve neler olduğunu göreceksiniz. – Hyperboreus
Veya sınıfın Ürdün'ü geçmeden önce atıldığından emin olmak için kodunuza son bir satır olarak bir 'del örneği' ekleyin. – Hyperboreus