Python析构函数__del__定义原理解析
作者:yoyo008 发布时间:2023-01-02 15:20:29
标签:python,垃圾,回收,析构,函数,del
析构函数__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())
来源:https://www.cnblogs.com/yoyo008/p/9602962.html
0
投稿
猜你喜欢
- 前言用命令行方式调用用例是我们最常用的方式,这方面确实比java的TestNG框架要好用许多,至少不用写xml文件,为了提供定制化运行用例的
- 导语当下的孩子们多少会被电子产品“侵袭”,那么既然都要玩游戏,为什么不选既能玩又能收获知识的呢?兴趣
- 本文在上文的基础上重新实现支持多线程的服务器。以下为TCP客户端的程序代码:#!/usr/bin/env python3import sys
- ppt通过其精美的可视化技巧以及良好的演示效果,成为了职场人士的必备技能。ppt的设计是一门大学问,无论是设计技巧,还是操作方法,都衍生出了
- PHP5.4后新增traits实现代码复用机制,Trait和类相似,但不能被实例化,无需继承,只需要在类中使用关键词use引入即可,可引入多
- 本文实例讲述了Python图形绘制操作之正弦曲线实现方法。分享给大家供大家参考,具体如下:要画正弦曲线先设定一下x的取值范围,从0到2π。要
- 先看下面例子的效果:<INPUT TYPE="text" NAME=""&
- 这篇论坛文章(赛迪网技术社区)主要介绍了配置一个高可用性的MySQL服务器负载均衡群集的具体过程,详细内容请参考下文:本文将告诉你如何配置一
- 引用是指保存的值为对象的地址。在 Python 语言中,一个变量保存的值除了基本类型保存的是值外,其它都是引用,因此对于它们的使用就需要小心
- Linux服务器有CentOS、Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了
- 在用爬虫爬取网站数据时,有些站点的一些关键数据的获取需要使用账号登录,这里可以使用requests发送登录请求,并用Session对象来自动
- 一、原因:今天在尝试初始化一个WEB应用的时候,发现其连接不上MySQL,从Traceback看到使用的默认密码为‘YES’。没辙,居然尝试
- 前言:我们先定义一个test01.py的文件。test01.py中代码如下所示:def step():print(__name__) &nb
- 公网与私有网络的判断其实十分简单,只要记住私有网络的三个网段。不过,对于记性不好的人或者学识不是很高的机器来说,有一种判断方法还是有必要的。
- 0、干货先写在前1、前端传值的数据必须使用JSON.stringify()传化2、后端,通过request.body接收数据,直接使用jso
- for x in ...循环 就是把每个元素代入变量x,然后执行缩进块的语句。range()函数,可以生成一个整数序列,再通过list()函
- 一、安装go get github.com/sirupsen/logrus二、使用1、当做标准库使用logrus实现了标准库log的方法,可
- 把今天的学习的opencv知识先记录一下!运行环境是:pycharm话不多说,献上代码再说:import cv2 # openc
- 一、概念梳理链表是计算机科学里面应用应用最广泛的数据结构之一。它是最简单的数据结构之一,同时也是比较高阶的数据结构(例如棧、环形缓冲和队列)
- pip是什么其实,pip就是 Python标准库(The Python Standard Library)中的一个包,这个包比较特殊,用它可