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 pickle模块用法实例分析
May 27 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
PYTHON基础-时间日期处理小结
May 05 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
python实现异常信息堆栈输出到日志文件
Dec 26 Python
Python sys模块常用方法解析
Feb 20 Python
学python需要去培训机构吗
Jul 01 Python
python文件及目录操作代码汇总
Jul 08 Python
Python3爬虫中Ajax的用法
Jul 10 Python
解决pytorch读取自制数据集出现过的问题
May 31 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
php cli换行示例
2014/04/22 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
php session 写入数据库
2016/02/13 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
原生JavaScript实现进度条
2021/02/19 Javascript
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
Python部署web开发程序的几种方法
2017/05/05 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
护理专业个人求职简历的自我评价
2013/10/13 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
应届毕业生求职信
2014/05/26 职场文书
公司庆典主持词
2015/07/04 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书