我创建了一个 Person 类,它有一个名字和一个孩子的列表。孩子们属于同一个 Person 类。如果我创建两个 Person 实例,并将一个子实例添加到其中一个 person 实例,它会被添加到两个 Person 实例中。我认为应该只将孩子添加到 person1 的孩子而不是 person2,但它会被添加到两者中。我一定是在做一些明显的错误,但我看不到。
类似的问题表明人们将变量定义添加到类本身而不是构造函数,但这不是这里发生的事情。任何帮助都将不胜感激,这让我的大脑感到煎熬!
请参阅下面的代码和输出:
class Person(object):
def __init__(self, name, children=[]):
self.name = name
self.children = children
def __repr__(self):
return '<' + self.name + '>'
def add_child(self, child):
self.children.append(child)
def main():
person1 = Person('Person1')
person2 = Person('Person2')
person1.add_child(Person("Person 1's child"))
print "Person 1's children:", person1.children
print "Person 2's children:", person2.children
if __name__ == "__main__":
main()
这段代码的输出是:
Person 1's children: [<Person 1's child>]
Person 2's children: [<Person 1's child>]