最近在熟悉Python的class类的时候,无意中发现同样的代码,在pycharm和IDLE中结果不同,闲话少说先上代码:
1 class aa():
2 def __init__(self,name):
3 print("my name is %s" % name)
4 def __del__(self):
5 print("delete ok")
6 def sit(self):
7 print('sit down')
8 if __name__ =="__main__":
9 a = aa("liming")
10 b = aa('suyang')
11 del a
12 b.sit()
Python
IDLE中的结果:
Pycharm中的结果:
可以看出pycharm中的 __del__方法被调用了两次。百度了一波发现了原因:
IDLE:是Python安装后自带的编译器,是交互模式没有回收实例。
pycharm:是一套优化后编译器运行后会释放资源,所以会自动触发__del__回收所有创建的实例。另外pycharm的debug模式不会自动触发回收机制,运行结果与IDLE一致。
最后:如果不想让pycharm中__del__内容多次打印的话,建议自定义del方法,这样就可以避免del的内容多次显示
转载于:https://www.cnblogs.com/yifengyu/p/11213217.html
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175246.html原文链接:https://javaforall.cn