python笔记-- “__del__”析构方法

-#### 1、基本概念(构造函数与析构函数)
特殊函数:由系统自动执行,在程序中不可显式地调用他们
构造函数: 建立对象时对对象的数据成员进行初始化(对象初始化)
析构函数: 对象生命期结束时回收的对象(回收/撤销对象)

2、__del__析构方法的作用

**使用场景:**一般定义在类内,被称为析构方法
作用: 销毁类的实例的时候调用,以释放占用的资源,其中可以放一些清理资源的代码,又如释放连接等
举例:

import  time
class Person:
    def __init__(self,name,age=18):
        self.name = name
        self._age = age

    def __del__(self):
        print('del析构方法进行对象销毁的清理工作')

def atest():
    tom = Person('tom')
atest()

运行结果:
在这里插入图片描述
以上结果可以看出,在类调用结束后,进行销毁时会自动调用__del__

2、与del方法的区别

我们先看个例子:

class Person:
    def __init__(self,name,age=18):
        self.name = name
        self._age = age

    def pa_a(self):
        print(f"姓名:{self.name}")

    # def __del__(self):
    #     print('del析构方法进行对象销毁的清理工作')


def atest():
    tom = Person('tom')
    del tom  
    tom2 = tom
    print(tom2.pa_a())

atest()

运行结果:
在这里插入图片描述
从以上运行结果可以看出,del tom执行后,相当于tom在内存中的引用被删除了,再将tom2指向tom的内存地址,是无法找到引用的,也就会报错。可以看出del是会删除引用计数的

再让我们来看看__del__:

import  time
class Person:
    def __init__(self,name,age=18):
        self.name = name
        self._age = age

    def __del__(self):
        print('del析构方法进行对象销毁的清理工作')



def atest():
    tom = Person('tom')
    tom.__del__()
    tom.__del__()
    tom.__del__()
    tom.__del__()
    print('==========start========')
    tom2 = tom
    tom3 = tom2
    print('=======del1')
    del tom
    time.sleep(3)
    print('======del2')
    del tom2
    print('==========del3')
    del tom3
    time.sleep(3)
    print('========end')

atest()

运行结果:
在这里插入图片描述
结论:
del: 会删除内存中的引用计数
_del_不会删除引用计数,只是在对象销毁的时候自动调用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值