这是我的代码:
class Plant:
def __init__(self,name):
self.name = name
class Garden:
def __init__(self,name):
self.name = name
list_of_plants = []
list_of_gardens = []
list_of_gardens.append(Garden("garden1"))
list_of_gardens.append(Garden("garden2"))
list_of_gardens[0].list_of_plants.append(Plant("Basil"))
print("Plant1: ", list_of_gardens[0].list_of_plants[0].name)
print("Plant2: ", list_of_gardens[1].list_of_plants[0].name)
输出:
Plant1: Basil
Plant2: Basil
为什么Basil出现在两个嵌套列表中?我什至没有影响第二个列表中的值!即使当我查看指针时,一切看起来也不错,但是append会继续在其他嵌套列表中添加值。
答案 0 :(得分:1)
您正在将list_of_plants
分配给该类,因此所有类实例将共享同一列表。您应该在self
中将其分配为__init__
的属性(即,将self.list_of_plants = []
再缩进4个空格),以便为每个单独的类实例创建一个新列表。