class Tree:
def __init__(self, label, children = []):
self.label = label
self.children = children
t1 = Tree("START")
t2 = Tree("END")
t1.children.append(t2)
print t2.children
[<__main__.Tree instance at 0x005421C0>]
为什么t2.children不是空的?
答案 0 :(得分:0)
问题是默认值只执行一次 - 当def语句被执行时。 因此,所有实例对象的子项都被分配了相同的列表。
简而言之,t1
和t2
的列表是相同的列表。