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运行其他程序的实现方法
Jul 14 Python
python中利用await关键字如何等待Future对象完成详解
Sep 07 Python
python版简单工厂模式
Oct 16 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
python打印异常信息的两种实现方式
Dec 24 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Python修改DBF文件指定列
Dec 19 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
js打造数组转json函数
2015/01/14 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
Python批量修改文件后缀的方法
2014/01/26 Python
Python中的包和模块实例
2014/11/22 Python
python使用7z解压apk包的方法
2015/04/18 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
如何手工释放资源
2013/12/15 面试题
《陶罐和铁罐》教学反思
2014/02/19 职场文书
爱情寄语大全
2014/04/09 职场文书
学校教研活动总结
2014/07/02 职场文书
民事起诉书范本
2015/05/19 职场文书
装修安全责任协议书
2016/03/22 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
实例讲解Python中sys.argv[]的用法
2021/06/03 Python