我是靠谱客的博主 懦弱小丸子,最近开发中收集的这篇文章主要介绍python的del方法_关于python:__ del__方法是什么,如何调用它?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我正在阅读代码。 在其中定义了__del__方法的类。 我发现此方法用于销毁类的实例。 但是,我找不到使用此方法的地方。 其主要原因是我不知道如何使用此方法,可能不是这样:obj1.del()。 因此,我的问题是如何调用__del__方法?

__del__是终结器。当删除对象的所有引用之后的某个时刻发生垃圾回收时,调用该方法。

在简单的情况下,这可能是在您说del x之后,或者,如果x是局部变量,则在函数结束之后。特别是,除非有循环引用,否则CPython(标准Python实现)将立即进行垃圾回收。

但是,这是CPython的实现细节。 Python垃圾回收的唯一必需属性是,它在所有引用都被删除之后发生,因此这可能没有必要在此之后立即发生,也可能根本不发生。

此外,由于多种原因,变量可以长期存在,例如传播性异常或模块自省可以使变量引用计数大于0。而且,变量可以是引用循环的一部分—启用垃圾回收的CPython大部分(但不是全部)中断此类循环,甚至只是周期性地中断。

由于您不能保证它会被执行,因此永远不要将需要运行的代码放入__del__()中-相反,此代码属于try块的finally子句或声明。但是,__del__存在有效的用例:例如如果对象x引用Y并且还在全局cache(cache['X -> Y'] = Y)中保留Y引用的副本,那么X.__del__也删除缓存条目将是礼貌的。

如果您知道析构函数提供了(违反上述准则)必需的清除操作,则您可能希望直接调用它,因为它在方法上没有什么特别之处:x.__del__()。显然,仅当您知道不介意被两次调用时&#

最后

以上就是懦弱小丸子为你收集整理的python的del方法_关于python:__ del__方法是什么,如何调用它?的全部内容,希望文章能够帮你解决python的del方法_关于python:__ del__方法是什么,如何调用它?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部