del class with recursive list

D

duccio

Hello!
Will someone have time to tell me why this code don't work as I expect?
And what should I do to make the "del n" delete all the lower nodes?
Thanks!

class Node:
def __init__(self):
self.childs=[]
def appendNode(self, n):
self.childs.append(n)
def __del__(self):
print 'del', id(self)

n = Node()
for i in range(5):
n.appendNode(Node())
for nodes in n.childs:
nodes.appendNode(Node())

del n

print '--------end--------'


gives this:


del 10965280
del 10965440
del 10965640
del 10965400
del 10965600
del 10965360
del 10965560
del 10965320
del 10965520
--------end--------
del 10965480
del 10965680
 
P

Peter Otten

duccio said:
Will someone have time to tell me why this code don't work as I expect?
And what should I do to make the "del n" delete all the lower nodes?
Thanks!

class Node:
def __init__(self):
self.childs=[]
def appendNode(self, n):
self.childs.append(n)
def __del__(self):
print 'del', id(self)

n = Node()
for i in range(5):
n.appendNode(Node())
for nodes in n.childs:
nodes.appendNode(Node())

# you forgot a reference to a child node and its child:
del nodes
del n

print '--------end--------'


gives this:


del 10965280
del 10965440
del 10965640
del 10965400
del 10965600
del 10965360
del 10965560
del 10965320
del 10965520
--------end--------
del 10965480
del 10965680

Peter
 
G

Gabriel Genellina

Thanks! I just need to remember to del the variables after "for in".

And when working on the interactive interpreter, it's easy to forget
the _ variable too (that holds the last printed expression)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,239
Members
46,827
Latest member
DMUK_Beginner

Latest Threads

Top