Py学习  »  Python

python中析构函数的用法

Max • 3 年前 • 1219 次点击  

以下情况不会导致两次释放内存的问题吗?为什么python3会破坏一个物体 什么时候它已经被程序员破坏了?

class Example:

    # Initializing
    def __init__(self):
        print('object created.')

    # Deleting (Calling destructor)
    def __del__(self):
        print('Destructor called, object deleted.')


obj = Example()
obj.__del__()

输出:

object created.
Destructor called, object deleted.
Destructor called, object deleted.
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128673
 
1219 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Bharel
Reply   •   1 楼
Bharel    3 年前

__del__() 您只是在实例上调用一个方法,没有任何特殊意义。

这个 方法,无论是您的方法还是默认方法,都绝对不执行任何操作。此外,它是 析构函数,而不是终结器:

当实例即将被销毁时调用。这也叫做 终结器或(不恰当地)析构函数。

Python的内存分配完全是内部的。唯一的 Python中的保证是如果 __del__;() 存在时,它将在对象从内存中删除之前被调用。在某些情况下,如果对象被复活,它甚至可能被调用两次或三次,或者在守护进程线程的情况下根本不被调用。

documentation .