Я новичок в Python и это материал OOP и не могу заставить его работать. Вот мой код:Python OOP и списки
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());
Похоже, что дерево2 и дерево разделяют список «данных»?
На данный момент я бы хотел, чтобы вывести что-то вроде [[20,44], 10, 4], но когда я
tree.appendLeft(tree2)
я RuntimeError: maximum recursion depth exceeded
, и, когда я даже не буду appendLeft(tree2)
он выводит [10, 20, 44, 4]
(!!!). Что мне здесь не хватает? Я использую Portable Python 3.0.1.
Спасибо
Я был смущен тем же поведением, и спросил [этот вопрос, «почему приписывать справочник ces действуют как это с наследованием Python "] (http://stackoverflow.com/questions/206734/why-do-attribute-references-act-like-this-with-python-inheritance), которые могут представлять интерес – dbr