【发布时间】:2016-03-17 15:53:35
【问题描述】:
我想打印一棵描述乐队的简单树。我首先创建一个名为“Band”的节点,然后创建子“Wind instruments”,依次生成子“Saxophone”和“Trumpet”。然后我为“管乐器”制作了一个兄弟,称为“歌曲”等等。代码非常简单:
class Node:
value = ""
down = None
right = None
def write(p):
if p==None:
return
print(p.value)
if p.down!=None: #My idea is that if we go down the tree, we indent first
print(" ",end="")
write(p.down)
write(p.right) #If we don't go down, we simply write out the siblings
a=Node()
a.value="Band"
a.down=Node()
a.down.value="Wind instruments"
a.down.down=Node()
a.down.down.value="Saxophone"
a.down.down.right=Node()
a.down.down.right.value="Trumpet"
a.down.right=Node()
a.down.right.value="Song"
a.down.right.right=Node()
a.down.right.right.value="String instruments"
a.down.right.right.down=Node()
a.down.right.right.down.value="Guitar"
a.down.right.right.down.right=Node()
a.down.right.right.down.right.value="Bass"
write(a)
输出是:
Band
Wind instruments
Saxophone
Trumpet
Song
String instruments
Guitar
Bass
但我希望输出是:
Band
Wind instruments
Saxophone
Trumpet
Song
String instruments
Guitar
Bass
有人知道如何实现这一目标吗?
【问题讨论】:
-
区分类变量和属性!在初始化
Node()value、down和right之后,类变量对于所有实例都是相同的。通过分配一个值,您将这三个添加为作为每个实例的单独变量的属性。您可以通过a = Node(); print(a.__dict__); a.value = 3; print(a.__dict__)查看。对于树木,请参见 e。 G。 openbookproject.net/thinkcs/python/english2e/ch21.html
标签: python python-3.x