【发布时间】:2011-05-11 02:57:18
【问题描述】:
在 Python 3.x 中,所有类都是 object 的子类。在 2.x 中,您必须明确声明 class MyClass(object)。而且,当我尝试编写尽可能多的 3.x 兼容代码时,我将继承 object。
在我的程序中,我使用了__del__ 方法,我想知道我是否应该调用object.__del__(self),或者这是否得到了神奇的处理?
谢谢, 韦恩
编辑: 我的意思似乎有些混乱 - 在它声明的文件中:
如果基类具有
__del__()方法,则派生类的__del__()方法(如果有)必须显式调用它以确保正确删除实例的基类部分。
所以我想知道我是否需要:
def __del__(self):
object.__del__(self)
或一些合适的替代品。
【问题讨论】:
-
你到底为什么打电话给
__del__?这有什么可能的目的?为什么不使用del语句并避免这种情况呢?你在做一些super( class, self ).__del__()吗?为什么? -
@S.Lott,
__del__的文档提到调用超类的__del__,我找不到任何有关将__del__与子类化object结合使用的信息。我没想到只是反省object发现它没有__del__,但现在我知道了。
标签: python subclass destructor python-2.x