Python中的常见特殊方法—— del方法
2024-09-06 04:31:53
__del__() 方法用于销毁Python对象——在任何Python对象将被系统回收的时候,系统都会自动调用这个方法。但是不要以为对一个变量执行del操作,该变量引用的对象就会被回收,当然不是,如果有多个变量引用它,del其中一个变量是不会回收该对象的。
栗子如下:
#coding=utf-8
class Item:
def __init__(self,name,price):
self.name=name
self.price=price
def __del__(self):
print('del方法删除对象')
#创建一个Item对象,将之赋值给it变量
it = Item('鼠标',29.8)
x = it
#打印it所引用的Item对象
del it
print('----------')
控制台打印如下:
解释:第6、7行代码重写了Item类的__del__() 方法,当系统将要回收Item时,系统会自动调用Item对象的__del__() 方法。上面的程序先创建了一个Item对象并将该对象赋值给变量it,第10行代码又将it赋值给x,所以程序中有两个变量引用了Item对象,然后程序执行del it 删除it对象,此时由于还有变量引用该Item对象,因此程序并不会回收Item对象。所以会看到如上面的输出结果,为什么会这样?因为del it 之后,程序并没有回收Item对象,只有等到程序即将结束时(系统必须回收所有对象),系统才会回收Item对象。如果将第10行代码注释,打印如下:
解释:注释之后,当程序执行del it ,此时程序中不再有任何变量引用Item对象,因此系统会立即回收该对象,不需要等到程序结束前。
最新文章
- bzoj4260
- Oracle 11g RAC停止和启动步骤
- 关于android截图的一些方法
- js获取新浪天气接口
- iOS 关于iOS开发中的delegate
- android adb shell
- 【HTML/XML 8】XSL,可扩展样式表语言
- VS2010 打包问题汇总
- redis 删除大key集合的方法
- WinCE平台的程序编译到Win32平台下运行
- 搭建C++环境
- STM32应用实例七:与宇电设备实现AI-BUS通讯
- java一些常用并发工具示例
- 定时任务中的备份不同的数据库中的所有的表,每个表使用单独的sql备份文件
- 1135: [POI2009]Lyz
- 『HTML5挑战经典』是英雄就下100层-开源讲座(一)从天而降的英雄
- c# 依赖注入之---反射(转)
- checkBox1_CheckedChanged(object sender, EventArgs e)和checkBox1_CheckStateChanged(object sender, EventArgs e)不同
- LightOJ 1269 - Consecutive Sum Trie树
- [uva11997]k个最小和