[Python-Dev] __del__ is not called after creating a new reference
Armin Rigo
armin.rigo at gmail.com
Sun Apr 2 04:20:36 EDT 2017
Hi all,
On 20 March 2017 at 22:28, Nathaniel Smith <njs at pobox.com> wrote:
> Modern CPython, and all extant versions of PyPy and Jython, guarantee that
> __del__ is called at most once.
Just a note, if someone actually depends on this: it is not true in
all cases. For example, in CPython 3.5.3:
>>> class X:
... __slots__=() # <= note this!
... def __del__(self):
... print("DEL")
... global resurrect
... resurrect = self
...
>>> print(X())
<__main__.X object at 0x7f5d1ad600d0>
DEL
>>> resurrect=None
DEL
>>> resurrect=None
DEL
>>> resurrect=None
DEL
A bientôt,
Armin.
More information about the Python-Dev
mailing list