In <[EMAIL PROTECTED]>, Fabian Steiner wrote:

> This is what I got so far:
> 
>      def getAllChildren(self, children=[]):
>          if self.children:
>              children.extend(self.children)
>              for child in self.children:
>                  child.getAllChildren(children)
>          return children
> 
> Unfortunately, it doesn't work like expected since the default parameter 
> children=[] is evaluated only once. That's why the children list becomes 
> larger and larger after calling the method several times but I can't 
> think of another possibility.
> 
> Do you have any ideas?

    def get_all_children(self, accumulator=None):
        if accumulator is None:
            accumulator = list()
        accumulator.extend(self.children)
        for child in self.children:
            child.get_all_children(accumulator)
        return accumulator

Ciao,
        Marc 'BlackJack' Rintsch

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to