python中的__del__方法

来源:互联网 发布:java分布式缓存框架 编辑:程序博客网 时间:2024/06/08 12:27

先来举个例子说明下del的用法:

del  对象的引用
class Dog:     passdog1 = Dog()dog2 = dog1del dog1
如图所示:

删除对象的意思就是这个对象所对应的内存空间被释放了

当dog1被删除了,dog2还在,引用计数减掉1而已,内存还不会被释放

实例1:

class Dog:def __del__(self):   #当内存不需要的时候调用这个删除方法,python解释器自动调用print(“英雄over”)dog1=Dog()  #创建一个对象dog2=dog1del dog1del dog2print(“==========”)
得到的结果为:

print(“英雄over”)   print(“==========”)

因为两个对象的引用都删除了,则内存空间被释放,会调用__del__方法

然后再输出======

实例2:
class Dog:def __del__(self):   #当内存不需要的时候调用这个删除方法,python解释器自动调用print(“英雄over”)dog1=Dog()  #创建一个对象dog2=dog1del dog1print(“==========”)
得到的结果为:

print(“==========”)print(“英雄over”) 

当删除了dog1,内存空间还没有结束,还不会调用__del__方法,当调用完最后一条语句时,内存空间被释放,调用__del__方法

测量对象引用的个数:

import syssys.getrefcount(引用的对象)

实例:

class T:       passt=T()tt=tsys.getrefcount(t)


得到的结果为3,实际的引用个数为2,会比实际的个数多1



注:删除掉的对象引用,是不能拿来当sys.getrefcount()中的参数的





原创粉丝点击