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 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
Python写的服务监控程序实例
Jan 31 Python
使用python实现tcp自动重连
Jul 02 Python
浅谈flask截获所有访问及before/after_request修饰器
Jan 18 Python
Python 2.7中文显示与处理方法
Jul 16 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
python异常处理之try finally不报错的原因
May 18 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
python中用ctypes模拟点击的实例讲解
Nov 26 Python
python 6种方法实现单例模式
Dec 15 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 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面向对象分析设计的经验原则
2008/09/20 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
JavaScript更改class和id的方法
2008/10/10 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python输出各行命令详解
2018/02/01 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
教育学专业实习生的自我鉴定
2013/11/26 职场文书
护士的自我鉴定
2014/02/07 职场文书
国培计划培训感言
2014/03/11 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
人生遥控器观后感
2015/06/11 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
python Tkinter模块使用方法详解
2022/04/07 Python