python在大家的印象中,没有专用的构造和析构函数。但是,从现在开始,作者将带领大家熟悉python中的__init__和__del__函数,以替代构造和析构机制。
PS:丰富的一线技术、多元化的表现形式,尽在“ 360云计算 ”,点关注哦!
析构函数是 C++ 中一个非常重要的概念,析构函数 (destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。 析构函数往往用来做“清理善后” 的工作,例如在建立对象时用 new 开辟了一片内存空间,delete 则会调用析构函数后释放内存。
而在 Python 中没有专用的构造和析构函数,但是一般可以在__init__和__del__分别完成初始化和删除操作,以替代构造和析构。
但是 Python 社区中的许多人都不推荐使用 __del__,因为 Python 对对象使用了引用计数来管理,很多情况下是很难以估计是什么时候引用计数为 0 而造成销毁的,同时很多使用技巧告诉我们使用 Python 编程不用再过度优化内存使用,以避免写出 C++ 风格的代码。
在本文中,我们将明确如何来正确使用__del__。
1
举个栗子
我们先来看个简单的测试用例:
输出:
Python 里也同 Java 一样采用了垃圾收集机制,不过不一样