当前位置: 首页 > 图灵资讯 > 行业资讯> Python __del__方法:销毁对象

Python __del__方法:销毁对象

发布时间:2025-10-20 21:23:11

与 init() 该方法对应于 __del__() 方法,__init__() 该方法用于初始化 Python 对象,而 __del__() 则用于销毁 Python 对象,即在任何地方 Python 当对象将被系统回收时,系统会自动调用对象 __del__() 方法。

当程序不再需要一个时 Python 当对象时,系统必须释放对象占用的内存空间,称为垃圾回收(GC,Garbage Collector),Python 所有物体占用的内存空间都会自动回收,因此开发者不需要关注物体垃圾回收的过程。

Python采用自动引用计数(ARC)在程序中引用Python对象时,可以回收对象占用的空间,
Python将自动保证对象的引用计数为1;当Python对象在程序中引用两个变量时,Python会自动保证对象的引用计数为2,
以此类推,如果对象的引用计数变为0,则表示程序中不再有变量引用对象,表示程序不再需要对象,
所以Python会回收这个对象。

大多数时候,大多数时候,Python 的 ARC 系统中的每个对象都可以准确高效地回收。但是,如果系统中有循环引用,如对象 a 持有实例变量引用对象 b,而对象 b 又持有实例变量引用对象 a,此时,两个对象的引用计数都是 1.事实上,程序中没有变量引用它们,系统应该回收它们 Python 垃圾回收器可能没那么快,要等专门的回收垃圾回收器(Cyclic Garbage Collector)这种引用循环被检测和回收。

当物体被垃圾回收时,Python 对象将自动调用 __del__ 方法。需要注意的是,不要认为执行一个变量 del 操作时,变量引用的对象将被回收,只有当对象引用计数变成时 0 只有当对象被回收时,对象才会被回收。因此,如果一个对象引用多个变量,那么 del 其中一个变量不会回收对象。

classItem:
def__init__(self,name,price):
self.name=name
self.price=price
#定义分析函数
def__del__(self):
print('del删除对象')
#创建ITEM对象,并将其赋予IM变量
im=Item('鼠标',29.8)
x=im#①
#Item对象引用的打印im
delim
print('--------------')

在程序中重写 Item 类的 __del__() 这种方法就是方法 Item 当系统将回收类的分析函数时 Item 当时,系统会自动调用 Item 对象的 __del__() 方法。

上述程序首先创建了一个 Item 对象并赋值对象 im 变量,① 号代码又将 im 赋值给变量 x,在这个程序中引用两个变量 Item 对象,下一个程序执行 del im 代码删除 im 此时,由于仍有变量引用对象 Item 因此,程序不会回收对象 Item 对象。

在操作上述程序时,可以看到以下输出结果:

--------------
del删除对象

从上述程序的输出结果可以看出,del im 执行之后,程序没有回收利用 Item 对象,只有在程序执行结束时(系统必须回收所有对象),系统才会回收 Item 对象。

假如在程序中 ① 注释号码代码,再次操作上述程序,将看到以下输出结果:

del删除对象
--------------

注释掉 ① 编号代码后,当程序执行时 del im 之后,程序中不再引用任何变量 Item 因此,系统会在程序结束前立即回收对象。

后来需要注意的是,如果父亲提供的话 __del__() 方法,系统重写 __del__() 在使用方法时,必须明确调用父类 __del__() 只有这样,父类实例的部分属性才能得到合理的回收。

相关文章

Python __del__方法:销毁对象

Python __del__方法:销毁对象

2025-10-20
Python如何使用tkinter编写GUI程序

Python如何使用tkinter编写GUI程序

2025-10-19
Python之字符编码汇总

Python之字符编码汇总

2025-10-19
Python中的垃圾回收机制是什么

Python中的垃圾回收机制是什么

2025-10-19
Python之安装和环境配置

Python之安装和环境配置

2025-10-19
Python split()方法详解:分割字符串

Python split()方法详解:分割字符串

2025-10-19