Kon*_*tin 6 python destructor super
我无法从Child类的析构函数中调用Parent类的析构函数.请检查以下代码:
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()
Run Code Online (Sandbox Code Playgroud)
当我使用时super(DerivativeClass, self).__del__(),DerivativeClass.__del__()我收到以下错误:
Exception TypeError: 'must be type, not None' in <bound method
DerivativeClass.__del__ of <__main__.DerivativeClass object at 0xb73a682c>> ignored
Run Code Online (Sandbox Code Playgroud)
题:
为什么我不能super在子类的析构函数中使用它,而它在子类的构造函数中完全没问题?
似乎这只发生在运行时退出(因为DerivativeClass是None).
这很好用:
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
Run Code Online (Sandbox Code Playgroud)
这也很好:
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()
Run Code Online (Sandbox Code Playgroud)
这个:
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 ()
Run Code Online (Sandbox Code Playgroud)
在片段1和3中,我确保实例在课前死亡.在摘录2中,我以相当丑陋的方式围绕整个问题.
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |