打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
浅谈Python中的“析构”函数

熟悉C++的同学都知道,可以为类定义一个析构函数,这样在类实例所占内存被回收时,系统就会自动调用析构函数。通常,我们会在析构函数中做一些“清理”工作,比如释放资源,关闭连接,或者发送一个网络包到其它服务以告知其状态变化等等。

而类实例所占内存被回收,包含以下几种情况:

  • 局部变量离开它的作用域
  • 动态分配的内存被手动回收(newdelete

    使用智能指针shared_ptr, uniq_ptr都归结为此类

  • 进程退出,包括主动退出(exit())和异常退出(未捕获信号)

以上所有情况都会促使类的析构函数被自动调用。当然,如果是机器挂了,那就没办法了。。。

那么在Python中,如何实现“析构函数”的功能呢?

__del__()

Python提供的最接近“析构函数”的概念,应该就是__del__()解构器方法了。使用方法如下:

class TestClass(object):    def __del__(self):        print '__del__ called'

但是,Python中所有的变量其实都是对内存对象的引用。只有当一个内存对象的引用计数降为0,即没有被变量引用时,解释器的垃圾回收机制才会回收这块内存。只有当内存被真正回收时,__del__方法才会被调用。

我们在命令行下进行如下测试:

>>> t1 = Test()>>> t2 = t1>>> del t1>>> del t2__del__

只有在对t1和t2都执行del操作后,__del__才被调用。

atexit

TODO

版权声明:本文为博主原
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python中
《Python编程从入门到实践(第2版)》第一部分学习小结
python内存释放
史上最细致讲解!Python 5大常用魔术方法,一学就会
类的定义与应用
面向对象是进阶非常重要的一环!给我五分钟让你完全掌握!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服