为什么 __del__ dunder 方法在 vs code 和 jupyter notebook 中表现不同
why __del__ dunder method act different in vs code vs jupyter notebook
del python 中的方法 class 在不同的文本编辑器中有两种不同的输出
class test:
def __init__(self) :
print("init")
def __del__(self):
print("del")
a=test()
vs 代码中的输出:
初始化
删除
输出到 jupyter 中:
初始化
当您 运行 终端中的 Python 脚本(与 vscode 中的类似)时,在执行完最后一行后,脚本终止。当脚本终止时,将调用 class test()
的 desctructor。在 class.
中的 __del__()
方法中定义了一个析构函数
在 Jupyter notebook 中,脚本不会终止,而是为您的下一个代码块准备就绪(apols 此处的术语可能略有偏差)。 __del__()
方法未被调用。
Python 语言参考中有明确说明。数据模型/特殊方法名称/基本定制说(强调我的):
object.del(self)
Called when the instance is about to be destroyed...
It is not guaranteed that del() methods are called for objects that still exist when the interpreter exits.
也就是说不同的环境对于__del__
的调用可能有不同的用法
del python 中的方法 class 在不同的文本编辑器中有两种不同的输出
class test:
def __init__(self) :
print("init")
def __del__(self):
print("del")
a=test()
vs 代码中的输出:
初始化 删除 输出到 jupyter 中:
初始化
当您 运行 终端中的 Python 脚本(与 vscode 中的类似)时,在执行完最后一行后,脚本终止。当脚本终止时,将调用 class test()
的 desctructor。在 class.
__del__()
方法中定义了一个析构函数
在 Jupyter notebook 中,脚本不会终止,而是为您的下一个代码块准备就绪(apols 此处的术语可能略有偏差)。 __del__()
方法未被调用。
Python 语言参考中有明确说明。数据模型/特殊方法名称/基本定制说(强调我的):
object.del(self)
Called when the instance is about to be destroyed...
It is not guaranteed that del() methods are called for objects that still exist when the interpreter exits.
也就是说不同的环境对于__del__