gpt4 book ai didi

Python 将元素添加到一个实例的列表中也会将其添加到另一个实例的列表中

转载 作者:太空狗 更新时间:2023-10-30 00:51:12 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
“Least Astonishment” in Python: The Mutable Default Argument

我创建了一个 Person 类,它有一个名字和一个 child 列表。 child 属于同一个 Person 类。如果我创建两个 Person 实例,并将一个 child 添加到其中一个 Person 实例,它会同时添加到两个 Person 实例。我假设 child 应该只添加到 person1 的 child 而不是 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>]

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com