为什么__del__dunder方法在vs代码与jupyter笔记本中的作用不同python类中的



del方法在不同的文本编辑器中有两个不同的输出

class test:
def __init__(self) :
print("init")
def __del__(self):
print("del")
a=test()

输出vs代码:

初始化del在jupyter中输出:

初始化

在终端中运行Python脚本时(与vscode中类似),在执行完最后一行后,脚本终止。当脚本终止时,会调用类test()destructor。在类中的__del__()方法中定义了一个解构造器。

在Jupyter笔记本中,脚本不会终止,而是为您的下一个代码块准备(注意,这里的术语可能略有偏离)。未调用__del__()方法。

它在Python语言参考中有明确的说明。数据模型/特殊方法名称/基本定制说明(强调我的):

对象del(自身)

在实例即将被销毁时调用
不能保证对解释器退出时仍然存在的对象调用del()方法

这意味着不同的环境可能对__del__的调用有不同的用途

最新更新