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统计日志ip访问数的方法
Jul 06 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
Python列表生成式与生成器操作示例
Aug 01 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python实现控制台打印的方法
Jan 12 Python
Django中Middleware中的函数详解
Jul 18 Python
python计算导数并绘图的实例
Feb 29 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
详解Python中的路径问题
Sep 02 Python
详解python日志输出使用配置文件格式
Feb 10 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导航下拉菜单的实现如此简单
2013/09/22 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python中的pass语句使用方法讲解
2015/05/14 Python
Python文件去除注释的方法
2015/05/25 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python MySQLdb使用教程详解
2018/03/20 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
基于python实现计算两组数据P值
2020/07/10 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
开业庆典策划方案
2014/02/18 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
节约用水演讲稿
2014/05/21 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
劳资员岗位职责
2015/02/13 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers