Python:无法使用super()调用父类析构函数

2024-09-29 19:06:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我不能从子类的析构函数调用父类的析构函数。 请检查以下代码:

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()

当我在DerivativeClass.__del__()中使用super(DerivativeClass, self).__del__()时,出现了以下错误:

^{pr2}$

问题:

为什么我不能在子类的析构函数中使用super,而在子类的构造函数中却完全可以使用呢?在


Tags: 函数代码selfobjectdef子类classprint
1条回答
网友
1楼 · 发布于 2024-09-29 19:06:27

这似乎只在运行时退出时发生(因为DerivativeClassNone)。在

这很好:

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

这个也很好:

^{pr2}$

还有这个:

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 ()

在片段1和3中,我确保实例在类之前死亡。在片段2中,我以一种相当丑陋的方式回避了整个问题。在

相关问题 更多 >

    热门问题