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内置函数bin() oct()等实现进制转换
Dec 30 Python
python通过smpt发送邮件的方法
Apr 30 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
Python基于有道实现英汉字典功能
Jul 25 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 Python
python 通过字符串调用对象属性或方法的实例讲解
Apr 21 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
python文字转语音实现过程解析
Nov 12 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
python 基于pygame实现俄罗斯方块
Mar 02 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP开发框架总结收藏
2008/04/24 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
Javascript的闭包
2009/12/31 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
厨师岗位职责
2013/11/12 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
管理建议书范文
2014/05/13 职场文书
安全目标管理责任书
2014/07/25 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
银行给客户的感谢信
2015/01/23 职场文书
投资意向协议书
2015/01/29 职场文书
道德与公民自我评价
2015/03/09 职场文书
高三物理教学反思
2016/02/20 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技