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 greenlet实现原理和使用示例
Sep 24 Python
python九九乘法表的实例
Sep 26 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
python实现Decorator模式实例代码
Feb 09 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
Python button选取本地图片并显示的实例
Jun 13 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
python处理写入数据代码讲解
Oct 22 Python
flask项目集成swagger的方法
Dec 09 Python
python函数的两种嵌套方法使用
Apr 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原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python输出9*9乘法表的方法
2015/05/25 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
详解python 中in 的 用法
2019/12/12 Python
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
医学生职业规划范文
2014/01/05 职场文书
消防安全宣传口号
2014/06/10 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
python入门学习关于for else的特殊特性讲解
2021/11/20 Python