python之对象回收机制
- python中,当程序执行完毕之后,python的垃圾回收机制就会将所有对象回收,清除占用的内存
 
请看如下代码
class Parent():
def __init__(self,name):
self.name=name
print('this is Parent_init') def __del__(self):
print('回收父类对象...') class Child(Parent):
def __init__(self,name,age):
super().__init__(name)
self.age=age
print('this is Child_init') def __del__(self):
print('回收子类对象....') #测试
ch=Child('Jane',23)
fc=Parent('Rounie')
#输出
this is Parent_init
this is Child_init
this is Parent_init
回收子类对象....
回收父类对象...
解释:上面定义了两个类父类Parent和子类Child,子类继承父类。执行测试的两行代码,创建了两个对象,一个子类对象ch,一个父类对象fc。因为类中显式定义了类的内置函数__del__()函数,所以python垃圾回收机制会调用各自__del__()函数完成对对象的回收。当然,如果不显式定义__del__()函数,执行完程序后,系统会自动调用类的内置函数__del__()完成对对象的回收。
2、对象再引用的回收机制
通过类的内置__del__()来回收,不管内置__del__()有没有被显式实现
3、对象引用的回收机制
__del__()如果被显式实现,对象回收则通过显式__del__()来回收,如果没有被显式实现,则调用内置__del__()来回收
python之对象回收机制的更多相关文章
- 详解python的垃圾回收机制
		
python的垃圾回收机制 一.引子 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存空间给回收掉,而变量名是访问到变量值的唯一方式 ...
 - 谈一谈python的垃圾回收机制
		
[python的垃圾回收机制是怎么实现的] 在C语言时代程序员要负责内存的申请和释放,虽然这样的程序可以对资源进行精细的控制.但是它也有它的问题.这就要求程序员 要写许多与业务逻辑无关的内容在代码里面 ...
 - python的垃圾回收机制和析构函数__del__
		
析构函数__del__定义:在类里定义,如果不定义,Python 会在后台提供默认析构函数. 析构函数__del__调用: A.使用del 显式的调用析构函数删除对象时:del对象名: class F ...
 - python之垃圾回收机制
		
一.前言 Python 是一门高级语言,使用起来类似于自然语言,开发的时候自然十分方便快捷,原因是Python在背后为我们默默做了很多事情,其中一件就是垃圾回收,来解决内存管理,内存泄漏的问题. 内存 ...
 - Python核心技术与实战——二十|Python的垃圾回收机制
		
今天要讲的是Python的垃圾回收机制 众所周知,我们现在的计算机都是图灵架构.图灵架构的本质,就是一条无限长的纸带,对应着我们的存储器.随着寄存器.异失性存储器(内存)和永久性存储器(硬盘)的出现, ...
 - Python的 垃圾回收机制
		
垃圾回收 1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 257) 这些整 ...
 - Python的垃圾回收机制
		
Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾.在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的 ...
 - 【Python】 垃圾回收机制和gc模块
		
垃圾回收机制和gc模块 Py的一个大好处,就是灵活的变量声明和动态变量类型.虽然这使得学习py起来非常方便快捷,但是同时也带来了py在性能上的一些不足.其中相关内存比较主要的一点就是py不会对已经销毁 ...
 - Python的垃圾回收机制(引用计数+标记清除+分代回收)
		
一.写在前面: 我们都知道Python一种面向对象的脚本语言,对象是Python中非常重要的一个概念.在Python中数字是对象,字符串是对象,任何事物都是对象,而它们的核心就是一个结构体--PyOb ...
 
随机推荐
- pytorch之expand,gather,squeeze,sum,contiguous,softmax,max,argmax
			
目录 gather squeeze expand sum contiguous softmax max argmax gather torch.gather(input,dim,index,out=N ...
 - mysql 第一课 win7艰难的配置与删除注册表重新安装
			
mysql 这个安装一定要慎重!慎重!慎重! 重要的事情说三遍.. 不会的一定要按步骤来~出错了真的很难受. 详细教程 --> https://jingyan.baidu.com/album/ ...
 - UVA 1625 "Color Length" (基础DP)
			
传送门 •参考资料 [1]:HopeForBetter •题意 •题解(by 紫书) •我的理解 用了一上午的时间,参考紫书+上述博文,终于解决了疑惑: 定义第一个颜色序列用串 s 表示,第二个用串 ...
 - 11-28\enum
			
1.创建一个枚举对象,对象中4个属性video视频.book书----(这2个属性可以用数字表示). 2.创建一个class对象,对象中有2个属性,一个是id属性(自己设置),第二个属性是type类型 ...
 - H3C配置Hybrid端口
 - vue-cli 初始化 -4058 error
			
如上图 原因:安装初始化时没有管理员权限 解决:进入目录删除node_modules,进入命令提示符以管理员身份重新运行: npm install
 - 2019牛客暑期多校训练营(第二场)F.Partition problem
			
链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...
 - dotnet core 获取 MacAddress 地址方法
			
本文告诉大家如何在 dotnet core 获取 Mac 地址 因为在 dotnetcore 是没有直接和硬件相关的,所以无法通过 WMI 的方法获取当前设备的 Mac 地址 但是在 dotnet c ...
 - 在eclipse动态网页项目中,编写web.xml时,servlet标签报错.
			
cvc-complex-type.2.4.b: The content of element 'servlet' is not complete. One of '{"http:// jav ...
 - nodejs的nvm与.net的dnvm使用对比
			
一.vm安装命令 nodejs的nvm安装命令: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.s ...