关于使用 Python 析构函数的正确姿势

本文介绍了Python中的__init__和__del__函数,作为构造和析构的替代。虽然Python社区不推荐频繁使用__del__,但文章详细讨论了如何在适当情况下正确使用它,包括上下文管理器、垃圾收集机制和循环引用问题,并提供了使用weakref模块避免循环引用的示例。
摘要由CSDN通过智能技术生成

python在大家的印象中,没有专用的构造和析构函数。但是,从现在开始,作者将带领大家熟悉python中的__init__和__del__函数,以替代构造和析构机制。

PS:丰富的一线技术、多元化的表现形式,尽在“ 360云计算 ”,点关注哦!

析构函数是 C++ 中一个非常重要的概念,析构函数 (destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。 析构函数往往用来做“清理善后” 的工作,例如在建立对象时用 new 开辟了一片内存空间,delete 则会调用析构函数后释放内存。

而在 Python 中没有专用的构造和析构函数,但是一般可以在__init__和__del__分别完成初始化和删除操作,以替代构造和析构。

但是 Python 社区中的许多人都不推荐使用 __del__,因为 Python 对对象使用了引用计数来管理,很多情况下是很难以估计是什么时候引用计数为 0 而造成销毁的,同时很多使用技巧告诉我们使用 Python 编程不用再过度优化内存使用,以避免写出 C++ 风格的代码。

在本文中,我们将明确如何来正确使用__del__。

1

举个栗子

我们先来看个简单的测试用例:

输出:

Python 里也同 Java 一样采用了垃圾收集机制,不过不一样

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值