del class with recursive list

Peter Otten __peter__ at web.de
Sat Mar 8 19:36:48 CET 2008


duccio wrote:

> 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



More information about the Python-list mailing list