Recursion problem
Dennis Peterson
denpeterson at yahoo.com
Sun May 19 09:48:25 EDT 2002
Now I get it! I was thinking in C++, and this was driving me crazy. Thanks
very much Raymond!
-Dennis
"Raymond Hettinger" <python at rcn.com> wrote in message
news:ac7m0m$ndu$1 at bob.news.rcn.net...
> Hello Dennis,
>
> I suspect that you want a separate data array for each instance of
Compound.
> Right now, both c and d share the same list. Separate them the way you
did
> with Simple. This should run nicely:
>
> class Simple:
> def __init__(self,x):
> self.data = x
> def getData(self):
> return self.data
>
> class Compound:
> def __init__(self):
> self.data = []
> def getData(self):
> y = ""
> for i in self.data:
> y += i.getData()
> return y
>
> def test():
> a = Simple("hello")
> b = Simple("goodbye")
> c = Compound()
> c.data.append(a)
> c.data.append(b)
> print c.getData()
> d = Compound()
> d.data.append(c)
> print d.getData()
>
>
> Raymond Hettinger
>
>
> "Dennis Peterson" <denpeterson at yahoo.com> wrote in message
> news:ac7d2u02vgg at enews2.newsguy.com...
> > I'm trying to implement a basic Composite pattern. In the following
code,
> I
> > expect c.getData() and d.getData() to both return "hellogoodbye".
Instead,
> > on d.getData() I get stacktrace printing "y += i.getData()" repeatedly
> until
> > recursion depth exceeded. Why?
> >
> > I'm new to Python, running latest Windows version just downloaded.
> >
> > class Simple:
> > def __init__(self,x):
> > self.data = x
> > def getData(self):
> > return self.data
> >
> > class Compound:
> > data = []
> > def getData(self):
> > y = ""
> > for i in self.data:
> > y += i.getData()
> > return y
> >
> > def test():
> > a = Simple("hello")
> > b = Simple("goodbye")
> > c = Compound()
> > c.data.append(a)
> > c.data.append(b)
> > print c.getData()
> > d = Compound()
> > d.data.append(c)
> > print d.getData()
> >
> >
>
>
More information about the Python-list
mailing list