在Python2.x中,我应该调用object.\u del\u?

在Python2.x中,我应该调用object.\u del\u?,python,subclass,destructor,python-2.x,Python,Subclass,Destructor,Python 2.x,在Python3.x中,所有类都是object的子类。在2.x中,您必须显式地声明类MyClass(object)。而且,当我试图编写尽可能多的3.x兼容代码时,我正在子类化object 在我的程序中,我使用的是方法,我想知道我是否应该调用对象 谢谢, 韦恩 编辑: 我的意思似乎有些混乱——在文件中,它指出: 如果基类具有\uuu del\uuu()方法,则派生类的\uuu del\uuu()方法(如果有)必须显式调用它,以确保正确删除实例的基类部分 所以我想知道我是否需要: def __del

在Python3.x中,所有类都是
object
的子类。在2.x中,您必须显式地声明
类MyClass(object)
。而且,当我试图编写尽可能多的3.x兼容代码时,我正在子类化
object

在我的程序中,我使用的是
方法,我想知道我是否应该调用
对象

谢谢, 韦恩

编辑: 我的意思似乎有些混乱——在文件中,它指出:

如果基类具有
\uuu del\uuu()
方法,则派生类的
\uuu del\uuu()
方法(如果有)必须显式调用它,以确保正确删除实例的基类部分

所以我想知道我是否需要:

def __del__(self):
    object.__del__(self)

或者一些合适的替代方法。

\uuu del\uuu
不是用来调用的。当对象没有更多引用并被收集时,析构函数将自动执行


相反,您不调用
\uuuu init\uuuu
,而是在创建对象时自动处理。调用
\uuu del\uu
不会破坏对象,这样做实际上可能会导致意外行为

检查并确认。您不需要在对象上调用
\uuu del\uu
方法,因为垃圾收集器应该为您执行此操作。只要编写一个正确的
\uuuuu del\uuuu
方法,python就会为您处理。

好吧,
对象实际上没有
\uu del\uuu
方法,所以不需要调用它

>>> object().__del__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute '__del__'
>>>对象()。\u__
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:'object'对象没有属性'\u del\u'

你到底为什么打电话给
\uu del\uu
?这有什么可能的目的呢?为什么不使用
del
语句并避免这种情况?你在做一些超级(类,自我)的事吗?为什么?@S.Lott,
的文档提到调用超类的
\u del\u
,我找不到任何关于将
\u del\u
与子类化
对象结合使用的信息。我没有想到仅仅内省
对象
,以发现它没有
\uu del\uuu
,但现在我知道了。我似乎没有清楚地沟通-我没有调用我对象的
\uu del\uu
-我(希望)在编辑中澄清了我的问题。