On Sat, 18 Mar 2017 01:54 am, Oleg Nesterov wrote: [...] > However, this trivial test-case > > class C: > def __del__(self): > print("DEL") > global X > X = self > C() > print(X) > X = 0 > print(X) > > shows that __del__ is called only once, it is not called again after "X = > 0": > > DEL > <__main__.C object at 0x7f067695f4a8> > 0
I cannot confirm that test case. When I try it, I get NameError: py> class C: ... def __del__(self): ... print("DEL") ... global X ... X = self ... py> C() <__main__.C object at 0xb785c48c> py> print(X) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'X' is not defined py> X = 0 py> print(X) 0 I've tried it in both Python 2.7 and 3.5 and get the same NameError. I suspect that you are not running the code you have shown us. -- Steve “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list