当前位置: 首页 > news >正文

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

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

2、__del__析构方法的作用

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

import  time
class Person:def __init__(self,name,age=18):self.name = nameself._age = agedef __del__(self):print('del析构方法进行对象销毁的清理工作')def atest():tom = Person('tom')
atest()

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

2、与del方法的区别

我们先看个例子:

class Person:def __init__(self,name,age=18):self.name = nameself._age = agedef pa_a(self):print(f"姓名:{self.name}")# def __del__(self):#     print('del析构方法进行对象销毁的清理工作')def atest():tom = Person('tom')del tom  tom2 = tomprint(tom2.pa_a())atest()

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

再让我们来看看__del__:

import  time
class Person:def __init__(self,name,age=18):self.name = nameself._age = agedef __del__(self):print('del析构方法进行对象销毁的清理工作')def atest():tom = Person('tom')tom.__del__()tom.__del__()tom.__del__()tom.__del__()print('==========start========')tom2 = tomtom3 = tom2print('=======del1')del tomtime.sleep(3)print('======del2')del tom2print('==========del3')del tom3time.sleep(3)print('========end')atest()

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

http://www.lryc.cn/news/4731.html

相关文章:

  • 支付系统核心架构设计思路(万能通用)
  • python实现mongdb的双活
  • LeetCode-110. 平衡二叉树
  • Python蓝桥杯训练:基本数据结构 [链表]
  • 华为OD机试 - 找字符(Python)| 真题+思路+代码
  • 使用继承与派生的6大要点
  • 加一-力扣66-java高效方案
  • 记一次 .NET 某游戏网站 CPU爆高分析
  • 集群使用——资源管理和租户创建
  • 谷歌浏览器登录失败,提示【无法同步到“...@gmail.com”】
  • 75 111111
  • 分销系统逻辑
  • MySQL视图特性
  • RabbitMQ详解(二):Docker安装RabbitMQ
  • 如何使用代码注释:关于JavaScript与TypeScript 注释和文档的自动生成
  • Echarts 设置面积区域图(areaStyle核心)
  • pandas——字符串处理【建议收藏】
  • 反射,枚举,lambda表达式
  • .Net Core对于RabbitMQ封装分布式事件总线
  • GPIO功能描述
  • 指派问题与匈牙利法讲解
  • day5——冒泡排序,选择排序和插入排序的学习
  • Windows 数据类型 (Windows Data Types)
  • 九龙证券|本周5只新股申购,特斯拉、蔚来、理想的供应商来A股了!
  • 设计模式(持续更新)
  • Prometheus 告警规则
  • mulesoft MCIA 破釜沉舟备考 2023.02.13.02
  • 获取DLL运行时路径的方法
  • “华为杯”研究生数学建模竞赛2006年-【华为杯】D题:学生面试中教师安排的优化与算法(附获奖论文)
  • 【JavaScript】复习 【对象参数】【函数参数】