Python析构函数__del__定义原理解析


Posted in Python onNovember 20, 2020

析构函数__del__定义:在类里定义,如果不定义,Python 会在后台提供默认析构函数。

析构函数__del__调用:

A、使用del 显式的调用析构函数删除对象时:del对象名;

class Foo:
  



def __init__(self,x):
    



self.x=x
  



def __del__(self): #在对象资源被释放时触发
    



print('-----del------')
    



print(self)




f=Foo(100000)




del f

B、当对象在某个作用域中调用完毕,跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。

class Foo:
def __init__(self,x):
  
self.x=x
  def __del__(self): #在对象资源被释放时触发
  
print('-----del------')
    print(self)
f=Foo(100000)
time.sleep(5) #time.sleep(5)执行完后,自动调用__del__()

注意:__del__只是删除了对象的引用,比如上面del f 只是f对象不再执行实例数据的存储空间了,实例数据并没有被删除,删除实例数据需要python本身的垃圾回收机制;

垃圾回收机制

Python 采用垃圾回收机制来清理不再使用的对象;Python 提供gc模块释放不再使用的对象,Python 采用‘引用计数' 的算法方式来处理回收,

即:当某个对象在其作用域内不再被其他对象引用的时候,Python 就自动清除对象;

Python 的函数collect()可以一次性收集所有待处理的对象(gc.collect())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python冒泡排序算法的实现代码
Nov 21 Python
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
Jul 18 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
通过实例了解python__slots__使用方法
Sep 14 Python
python线程池 ThreadPoolExecutor 的用法示例
Oct 10 Python
用python 绘制茎叶图和复合饼图
Feb 26 Python
python元组拆包实现方法
Feb 28 Python
一文搞懂python异常处理、模块与包
Jun 26 Python
Python request post上传文件常见要点
Nov 20 #Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 #Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 #Python
Django vue前后端分离整合过程解析
Nov 20 #Python
基于Python的图像阈值化分割(迭代法)
Nov 20 #Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 #Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 #Python
You might like
PHP学习之正则表达式
2011/04/17 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
用js实现放大镜效果
2020/10/28 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
Python实现批量修改文件名实例
2015/07/08 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
会议活动邀请函
2014/01/27 职场文书
《巨人的花园》教学反思
2014/02/12 职场文书
暑假家长评语大全
2014/04/17 职场文书
学生安全责任书模板
2014/07/25 职场文书
入团介绍人意见范文
2015/06/04 职场文书
勇敢的心观后感
2015/06/09 职场文书
2015双创工作总结
2015/07/24 职场文书
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers