无法触发__del__()方法啊
本帖最后由 acper 于 2019-1-24 14:34 编辑大家好,我在学习Python,按照小甲鱼的方法,想在垃圾回收时触发__del__(),但是貌似不行啊,求解释,代码如下:
class A:
def __del__(self):
print('del down')
a = A()
del(a)
无法打印del down啊。
我的终于也打印出来了,原来是我操作系统的问题,同样的代码在Linux下是打印不出来的。在win下是可以的。有知道的同学,给留言告知一下呗。 我运行可以 塔利班 发表于 2019-1-24 12:35
我运行可以
我的Python版本是3.6.7,不报错,一切正常,就是不打印。 iwanna 发表于 2019-1-24 12:31
好吧,del()也可以
问题在于python解释器不一定在你del所有引用之后立刻回收对象
stackoverflow的回答:
在谷歌的翻译的帮助下看完了,谢谢。那我想在垃圾回收时,做一些操作比如print('hello,world'),应该重写哪个方法呢?
刚才我又用id(a)试了试,del(a)后,调用id(a)报错,内容为a未定义。这说明a已经被清楚了吧?
另:我的Python版本为3.6.7 谢谢。 acper 发表于 2019-1-24 13:00
我的Python版本是3.6.7,不报错,一切正常,就是不打印。
我运行也可以打印。{:10_247:} iwanna 发表于 2019-1-24 13:45
我不清楚垃圾回收,你可以去看看python垃圾回收的实现
你为什么非要在垃圾回收的时候做这些事情呢?
我在做小甲鱼的课后作业啊,题目“0.思考这一讲我学习的内容,请动手在一个类中定义一个变量,用于跟踪该类有多少个实例被创建(当实例化一个对象,这个变量+1,当销毁一个对象,这个变量自动-1)。” heidern0612 发表于 2019-1-24 13:45
我运行也可以打印。
感觉生命已经没有了意义。{:5_100:} iwanna 发表于 2019-1-29 00:44
更新了自己的新发现.在读Fluent Python时发现的
可否明示哈。{:9_241:} 本帖最后由 self_gj 于 2020-4-24 10:08 编辑
第一次没有触发,去除del(a)运行后触发__del__方法 打印del_down
再增加del(a) 运行可以触发
@永恒的蓝色梦想 你看这里的最佳是 1970 年啊
页:
[1]