在构造函数中实例化列表的问题

时间:2013-10-14 04:10:18

标签: python list

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不是空的?

1 个答案:

答案 0 :(得分:0)

问题是默认值只执行一次 - 当def语句被执行时。 因此,所有实例对象的子项都被分配了相同的列表。

简而言之,t1t2的列表是相同的列表。