python中的__del__方法

本文详细介绍了Python中del关键字的使用方法,包括通过del删除对象引用的影响、__del__方法的作用时机及如何测量对象引用计数等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来举个例子说明下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()中的参数的





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值