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中for循环和while循环的基本使用方法
Aug 21 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
python实现公司年会抽奖程序
Jan 22 Python
python读写csv文件实例代码
Jul 05 Python
Django对models里的objects的使用详解
Aug 17 Python
python datetime中strptime用法详解
Aug 29 Python
python getopt模块使用实例解析
Dec 18 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
Python Spyder 调出缩进对齐线的操作
Feb 26 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
MySQL相关说明
2007/01/15 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
在Python的web框架中配置app的教程
2015/04/30 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
实例详解Python模块decimal
2019/06/26 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
教师的实习自我鉴定
2013/12/17 职场文书
求职意向书范文
2014/04/01 职场文书
公司搬迁通知
2015/04/20 职场文书
离婚起诉书怎么写
2015/05/19 职场文书