python __del__() 中的析构函数用法
Destructor usage in python __del__()
下面会不会造成两次释放内存的问题?为什么 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.
通过调用__del__()
,您只是在实例上调用一个方法,没有任何特殊意义。
__del__()
方法,无论是您的方法还是默认情况下都完全没有任何作用。此外,它 不是 析构函数而是终结器:
Called when the instance is about to be destroyed. This is also called
a finalizer or (improperly) a destructor.
Python的内存分配完全是内部的。 Python 中唯一的 weak 保证是,如果方法 __del__()
存在,它将在对象从内存中删除之前立即调用。如果对象复活,在某些情况下它甚至可能被调用两次或三次,或者在守护线程的情况下根本不会被调用。
更多信息,请阅读documentation。
下面会不会造成两次释放内存的问题?为什么 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.
通过调用__del__()
,您只是在实例上调用一个方法,没有任何特殊意义。
__del__()
方法,无论是您的方法还是默认情况下都完全没有任何作用。此外,它 不是 析构函数而是终结器:
Called when the instance is about to be destroyed. This is also called a finalizer or (improperly) a destructor.
Python的内存分配完全是内部的。 Python 中唯一的 weak 保证是,如果方法 __del__()
存在,它将在对象从内存中删除之前立即调用。如果对象复活,在某些情况下它甚至可能被调用两次或三次,或者在守护线程的情况下根本不会被调用。
更多信息,请阅读documentation。