在Python中的析构函数
用户调用析构函数以销毁对象。在Python中,开发人员可能不需要析构函数,因为它在C++语言中所需的程度不高。这是因为Python具有垃圾回收器,其功能是自动处理内存管理。
在本文中,我们将讨论Python中析构函数的工作原理以及用户何时可以使用它们。
在Python中, __del__()
函数被用作析构函数。当对象的所有引用都被删除并且成为垃圾收集时,用户可以调用 __del__()
函数。
语法:
用户还应注意,当对象超出引用范围或代码结束时,对该对象的引用也将被删除。
在下面的示例中,我们将使用__del__()
函数和del关键字来删除对象的所有引用,以便析构函数能够自动调用。
例如:
输出:
解释 –
在上述代码中,析构函数在对象的引用被删除或程序结束后被调用。这意味着对象的引用计数变为零,并不是在对象超出作用域时。我们将通过下一个示例来解释这一点。
我们还可以注意到析构函数是在程序结束后调用的。
示例:
输出:
现在,在下一个示例中,我们将看到当调用函数时,它会创建类Zebra的实例,并将自身传递给类Lion,然后类Lion将设置对类Zebra的引用,并导致循环引用。
示例:
输出:
一般来说,Python的垃圾收集器被用于检测这些类型的循环引用,并会删除引用。但是,在上面的示例中,自定义解构函数被用于标记该项为不可回收。
简单来说,这意味着垃圾收集器不知道对象应该被销毁的顺序,所以它们被保留。因此,如果用户的实例涉及到这种循环引用,它们将在应用程序运行期间一直存储在内存中。
结论
在本文中,我们解释了Python中解构函数的功能以及用户如何使用它们来删除已经从内存中删除引用的对象。