[Python-Dev] PEP 442: Safe object finalization
Richard Oudkerk
shibturn at gmail.com
Sat May 18 16:52:56 CEST 2013
On 18/05/2013 3:18pm, Antoine Pitrou wrote:
> It works fine:
>
> $ ./python sbt.py
> <__main__.Node object at 0x7f3acbf8f400> <__main__.Node object at 0x7f3acbf8f878>
> <__main__.Node object at 0x7f3acbf8f878> <__main__.Node object at 0x7f3acbf8f400>
>
> The reason is that, when you execute "del self.next", this removes the
> last reference to self.next and destroys it immediately.
So even more contrived:
class Node:
def __init__(self, x):
self.x = x
self.next = None
def __del__(self):
print(self.x, self.next.x)
del self.x
a = Node(1)
b = Node(2)
a.next = b
b.next = a
del a, b
gc.collect()
--
Richard
More information about the Python-Dev
mailing list