自定义析构方法__del__使用时在IDLE和pycharm中一样的代码运行结果不同

今天敲代码的时候发现自定义析构方法__del__使用时在IDLE和pycharm中一样的代码运行结果不同

class Person:

    def __del__(self):
        print("销毁对象:{0}".format(self))

p1 = Person()
p2 = Person()
del p1
print("程序结束")

IDLE的运行结果如下:

销毁对象:<__main__.Person object at 0x0000000002E2AC88>
程序结束

pycharm的运行结果如下:

销毁对象:<__main__.Person object at 0x0000000001DD8B00>
程序结束
销毁对象:<__main__.Person object at 0x00000000021B2B00>

通过查找相关资料发现:
IDLE:是一种交互模式的编译器,没有垃圾回收机制
pycharm:是一种优化的编译器,运行后会实现自动的垃圾回收,所以会自动触发__del__回收所有创建的实例。同时pycharm的debug模式也不会自动触发回收机制,其运行结果与IDLE的运行结果一致。

发布了12 篇原创文章 · 获赞 2 · 访问量 340

猜你喜欢

转载自blog.csdn.net/yuchen_lucky/article/details/103097139