[转载] python的__del__()方法
参考链接: Python的__name __(特殊变量)
1. 创建多个对象的时候触发__del__方法
Python解释器释放实例对象的时候,调用该对象的__del__方法
各个对象被被Python解释器释放对象的时候调用__del__方法
class Person(object):
def __init__(self,name):
self.name = name
def __del__(self):
print("实例对象:%s"%self.name,id(self))
print("python解释器开始回收%s对象了" % self.name)
print("类对象",id(Person))
zhangsan = Person("张三")
print("实例对象张三:",id(zhangsan))
print("------------")
lisi = Person("李四")
print("实例对象李四:",id(lisi))
执行效果
2. 使用del删除引用时的调用情况
当使用del 把内存的所有应用删除,立刻调用__del__方法
执行效果
创建对象后,Python解释器默认调用__init__()方法;
当删除一个对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法
3. 创建多个实例对象并且删除
import time
class Animal(object):
# 初始化方法
# 创建完对象后会自动被调用
def __init__(self, name):
print('__init__方法被调用')
self.__name = name
# 析构方法
# 当对象被删除时,会自动被调用
def __del__(self):
print("__del__方法被调用")
print("%s对象马上被干掉了..."%self.__name)
# 创建对象
dog = Animal("哈皮狗")
# 删除对象
del dog
cat = Animal("波斯猫")
cat2 = cat
cat3 = cat
print("---马上 删除cat对象")
del cat
print("---马上 删除cat2对象")
del cat2
print("---马上 删除cat3对象")
del cat3
print("程序2秒钟后结束")
time.sleep(2)
结果:
4. 测量对应引用个数
5. 小结
当有1个变量保存了对象的引用时,此对象的引用计数就会加1。
当使用del删除变量指向的对象时,如果对象的引用计数不会1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除
注意
del xxx 不会主动调用__del__方法,只有引用计数 == 0时,__del__()才会被执行,并且定义了__del_()的实例无法被Python的循环垃圾收集器收集,所以尽量不要自定义__del__()。一般情况下,__del__() 不会破坏垃圾处理器。
[转载] python的__del__()方法相关推荐
- python的__del__()方法
创建对象后,Python解释器默认调用__init__()方法.当删除一个对象时,Python解释器也会默认调用一个方法,这个方法为__del__()方法.在Python中,对于开发者来说很少会直接销 ...
- [转载] Python 3 集合方法 remove( )
参考链接: Python 集合set remove() Python 3 集合方法 remove( ) Python 3.8.5 语法格式: set.remove(elem) 描述: 从集合中移除元素 ...
- [转载] Python dict.keys方法
参考链接: Python字典keys() 目录 描述 语法 使用示例 注意事项 函数返回的是一个可迭代序列,而不是列表 描述 dict.keys()方法是Python的字典方法,它将字典中的所有键组成 ...
- [转载] Python str title()方法
参考链接: Python 字符串String title 方法 目录 描述 语法 参数 返回值 使用示例 注意事项 1. 当字符串中的每个单词首字符本身就是大写 2. 当"单词"的 ...
- [转载] Python time sleep()方法如何使用?
参考链接: Python sleep() 转载自:http://www.runoob.com/python/att-time-sleep.html 转载自:https://blog.csdn.net/ ...
- [转载] Python List index方法
参考链接: Python list index() Python列表的index方法,[elements].index(element),求取元素element在列表中第一次出现的索引. list_1 ...
- [转载] Python Set intersection() 方法
参考链接: Python Set intersection() 描述 intersection() 方法用于返回两个或更多集合中都包含的元素,即交集. 语法 intersection() 方法语法: ...
- [转载] Python List index()方法
参考链接: Python list | index 描述 index() 函数用于从列表中找出某个值第一个匹配项的索引位置. 语法 index()方法语法: list.index(obj) ...
- [转载] python字符串表示方法_python字符串使用方法归纳
参考链接: Python字符串| splitlines capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符 ...
最新文章
- Arcgis10.2安装与解决 [转载自麻辣GIS]
- array.slice_Ruby中带有示例的Array.slice()方法
- MySQL 集群 3副本,Kubernetes经典实践——运行MySQL多副本集群
- 网络流 poj 2195
- 英国python工资_在伦敦金融城当数据分析师-Python篇
- golang 数据一 (字符串、数组和数组指针)
- R与Python手牵手:数据科学导论系列(包的载入)
- python方差分析_R语言方差分析ANOVA
- 广义表存储结构图的绘制
- com.jcraft.jsch.JSchException: Algorithm negotiation fail 异常解决
- mysql tidb 删除延迟_TiDB DM踩坑实践总结
- 密钥文件snk 、AssemblyInfo.cs
- 1553B 协议详解
- php sybase存储过,SYBASE存储过程详解
- 关于启动 vue 项目出现 98% after emitting CopyPlugin 问题的出现
- 微信小程序截屏保存图片
- (附源码)springboot车辆管理系统 毕业设计031034
- 隐私协议授权访问的实现
- 直播系统定制开发——海量用户实时消息系统架构演进实践
- html给table加外边框,html如何给table表单加边框
热门文章
- python2中的print语句可以不用小括号。_Python 2.7终结于7个月后,这是你需要了解的3.X炫酷新特性...
- 需要多少次找出较轻的小球
- Linux 操作系统(I)
- redis主从复制_Redis 的主从复制(Master/Slave)
- 文件摆渡是什么意思_小白学炒股:除权、填权、贴权是个什么东东?
- LeetCode解题思路—双指针模式
- 试题16 回文数字(5位或6位)
- [PyTorch] reverse the normalization
- 向量-创建数组-linspace/logspace函数
- 接收机端口电压dBuV如何转化为功率dBmW