python 对象的销毁

您所在的位置:网站首页 石家庄确诊李某居住地址 python 对象的销毁

python 对象的销毁

2024-01-23 15:36| 来源: 网络整理| 查看: 265

Python自动删除不需要的对象(内置类型或类实例)以释放内存空间。通过周期性的Python回收的存储器块不再是在使用中的过程被称为无用单元收集。

Python的垃圾收集器在程序执行期间运行,并在对象的引用计数达到零时触发。对象的引用计数随指向它的别名数量的变化而变化。

当它被分配一个新的名称或放置在容器中(列表,元组,或词典)的对象的引用计数增加。当用del删除对象,重新分配其引用或引用超出范围时,该对象的引用计数会减少。当一个对象的引用计数为零,Python的自动收集它。a = 40 # Create object 

b = a # Increase ref. count of 

c = [b] # Increase ref. count of 

del a # Decrease ref. count of 

b = 100 # Decrease ref. count of 

c[0] = -1 # Decrease ref. count of 

通常,您不会注意到垃圾收集器何时销毁一个孤立实例并回收其空间。但是,类可以实现称为析构函数的特殊方法__del __(),该方法将在实例即将被销毁时调用。这种方法可以用来清理通过一个实例使用的非内存资源。

示例

这个__del __()析构函数输出将要销毁的实例的类名-#!/usr/bin/python

class Point:

def __init__( self, x=0, y=0):

self.x = x

self.y = y

def __del__(self):

class_name = self.__class__.__name__

print class_name, "destroyed"

pt1 = Point()

pt2 = pt1

pt3 = pt1

print id(pt1), id(pt2), id(pt3) # prints the ids of the obejcts

del pt1

del pt2

del pt3

输出结果

执行以上代码后,将产生以下结果-3083401324 3083401324 3083401324

Point destroyed

注意-理想情况下,您应该在单独的文件中定义类,然后使用import语句将它们导入到主程序文件中。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3