python中的__del__方法

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

del  对象的引用
class Dog:
     pass

dog1 = Dog()
dog2 = dog1

del dog1
如图所示:

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

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

实例1:

class Dog:
def __del__(self):   #当内存不需要的时候调用这个删除方法,python解释器自动调用
print(“英雄over”)

dog1=Dog()  #创建一个对象
dog2=dog1

del dog1
del dog2
print(“==========”)
得到的结果为:

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

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

然后再输出======

实例2:
class Dog:
def __del__(self):   #当内存不需要的时候调用这个删除方法,python解释器自动调用
	print(“英雄over”)

dog1=Dog()  #创建一个对象
dog2=dog1

del dog1
print(“==========”)
得到的结果为:

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


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

测量对象引用的个数:

import sys
sys.getrefcount(引用的对象)

实例:

class T:
       pass
t=T()
tt=t
sys.getrefcount(t)


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



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





发布了57 篇原创文章 · 获赞 94 · 访问量 13万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览