Ok, I finally got it working! See below On 2/4/06, Steven D'Aprano <[EMAIL PROTECTED]> wrote: > On Sat, 04 Feb 2006 02:18:27 -0500, Gregory Piñero wrote: > > class Node: > > def __init__(self): > > self.arg0=0 > > self.arg1=0 > > self.arg2=0 > > self.arg3=0 > > You appear to be iterating over these attributes. Hint: as soon as you > have more than two pieces of data with names like foo0, foo1, foo2... > you probably want something like this: > > def __init__(self): > self.trees = [0, 0, 0, 0] # they aren't args, they are sub-trees > > You are iterating over everything in __dict__ which is probably not what > you want. Your code has serious side-effects, because you are iterating > over ALL instance attributes, even the ones which are not nodes. > > for varname,value in node.__dict__.items(): > node.__dict__[varname] = value > # this touches all instance attributes > > This is safer: > > for index, value in enumerate(node.trees): > node.trees[index] = value > # this only touches what you want
Yep, this is what fixed it. Thanks Steve. I turns out that there is a lot of other stuff in __dict__ that was messing me up and causing the infinite recursion. Terry was also kind of right in that I was never hitting my base case, since I was getting stuck on a var in __dict__ and recursing forever before I ever got to the base case. -Greg -- http://mail.python.org/mailman/listinfo/python-list