Python OOP and lists

Posted by Mikk on Stack Overflow See other posts from Stack Overflow or by Mikk
Published on 2010-05-20T23:04:37Z Indexed on 2010/05/21 11:00 UTC
Read the original article Hit count: 318

Filed under:
|
|

Hi,

I'm new to Python and it's OOP stuff and can't get it to work. Here's my code:

class Tree:

    root = None;
    data = [];

    def __init__(self, equation):
        self.root = equation;

    def appendLeft(self, data):
        self.data.insert(0, data);

    def appendRight(self, data):
        self.data.append(data);

    def calculateLeft(self):
        result = [];
        for item in (self.getLeft()):
            if (type(item) == type(self)):
                data = item.calculateLeft();
            else:
                data = item;
            result.append(item);
        return result;

    def getLeft(self):
        return self.data;

    def getRight(self):
        data = self.data;
        data.reverse();
        return data;

tree2 = Tree("*");
tree2.appendRight(44);
tree2.appendLeft(20);

tree = Tree("+");
tree.appendRight(4);
tree.appendLeft(10);
tree.appendLeft(tree2);

print(tree.calculateLeft());

It looks like tree2 and tree are sharing list "data"?

At the moment I'd like it to output something like [[20,44], 10, 4], but when I

tree.appendLeft(tree2) 

I get RuntimeError: maximum recursion depth exceeded, and when i even won't appendLeft(tree2) it outputs [10, 20, 44, 4] (!!!). What am I missing here? I'm using Portable Python 3.0.1.

Thank you

© Stack Overflow or respective owner

Related posts about python

Related posts about class-variables