Форум сайта python.su
Доброго времени суток всем.
Помогите разобратся, мне кажется я не совсем правильно создаю последовательность, ну или еще чтото :)
вот код:
from itertools import chain
class cNode:
def __init__(self, name = "", attrs = {}):
self.name = name
self.attrs = attrs
def GetAttrs(self):
return self.attrs.keys()
def GetValue(self, attr):
value = None
try:
value = self.attrs[attr]
except KeyError:
pass
return value
class cTree:
class cData:
def __init__(self, data=None):
self.child = []
self.node = data
def __iter__(self):
#for nn in self.child:
# yield nn
for n in chain([self], *self.child):
yield n
def __init__(self):
self.data = cTree.cData()
def __iter__(self):
for n in self.data:
if isinstance(n.node, cNode):
yield n.node
def Append(self, parent, node):
temp = cTree.cData(node)
if parent is None:
self.data.child.append(temp)
else:
for n in self.data:
if n.node == parent:
n.child.append(temp)
break
tree = cTree()
node1 = cNode("root")
node2 = cNode("3")
node3 = cNode("4")
node4 = cNode("5")
node5 = cNode("1")
node6 = cNode("2")
node7 = cNode("10")
node8 = cNode("11")
node9 = cNode("12")
tree.Append(None, node1)
tree.Append(node1, node2)
tree.Append(node2, node3)
tree.Append(node2, node4)
tree.Append(node1, node5)
tree.Append(node1, node6)
tree.Append(node3, node7)
tree.Append(node3, node8)
tree.Append(node3, node9)
for tn in tree:
print tn.name
root
3
4
10
11
12
5
1
2
Офлайн