[Python-Dev] results of id() and weakref.getweakrefs() sometimes break on object resurrection
Antoine Pitrou
solipsis at pitrou.net
Mon Oct 27 15:14:22 CET 2014
On Mon, 27 Oct 2014 14:36:31 +0100
Stefan Richthofer <stefan.richthofer at gmx.de> wrote:
> Your test program performs no resurrection of x.
>
> Interestingly, it does not change behavior if you write
>
> class X(object):
> def __del__(self):
> X.x = self
> print ref()
>
> (Thanks for making me aware of this! My test-case was already
> initially the more complex one given below)
>
> But if the resurrection occurs indirectly, the weakref persists:
It's not that resurrection occurs indirectly, it's that the object
pointed to by "x2" always remains alive (first as an instance attribute
of x, second as a class attribute of X *before x is deleted*).
Regards
Antoine.
More information about the Python-Dev
mailing list