Python类析构函数是否保证在程序结束前执行



我们可以强制执行带有del的析构函数,通常只让垃圾收集器完成它的工作,但如果我们在Python中定义一个类析构函数时,它是否保证对每个实例化的对象都执行?

简短回答:没有。

更长的答案:__del__并不是C++意义上的析构函数,您可能不想使用它

相反,如果您需要清理,您可能应该将对象放入上下文管理器中(通过编写__enter____exit__方法(,并在with语句中使用它们,和/或为它们提供需要显式调用的close方法。Python中的大多数类和广泛使用的库都需要释放外部资源(通常通过让__enter__返回self__exit__调用self.close()(。

使用垃圾回收,通常不需要像在C++中那样解除分配__init____new__中分配的任何内存,因为它将被自动收集。

__del__方法有一些用途,但很少使用。

最新更新