Python 通过调用 __init__()
方法构造当前类的实例化对象__del__()
方法,功能正好和 init() 相反,其用来销毁实例化对象。
编写程序时,如果之前创建的类实例化对象后续不再使用,最好在适当位置手动将其销毁,释放其占用的内存空间(整个过程称为垃圾回收(简称GC))。
但 Python 有自动的垃圾回收机制,能自动将不需要使用的实例对象进行销毁。
注意,最后一行输出信息,是程序执行即将结束时调用 __del__()
方法输出的。
class demo:
def __init__(self):
print("调用 __init__() 方法构造对象")
def __del__(self):
print("调用__del__() 销毁对象,释放其空间")
pydemo = demo()
del pydemo
可以看到,当程序中有其它变量(比如这里的 cl)引用该实例对象时,即便手动调用 del() 方法,该方法也不会立即执行。这和 Python 的垃圾回收机制的实现有关。
Python 采用自动引用计数(简称 ARC)的方式实现垃圾回收机制。该方法的核心思想是:每个 Python 对象都会配置一个计数器,初始 Python 实例对象的计数器值都为 0,如果有变量引用该实例对象,其计数器的值会加 1,依次类推;反之,每当一个变量取消对该实例对象的引用,计数器会减 1。如果一个 Python 对象的的计数器值为 0,则表明没有变量引用该 Python 对象,即证明程序不再需要它,此时 Python 就会自动调用 del() 方法将其回收。