在类Python的嵌套列表中追加元素

时间:2018-09-26 21:39:21

标签: python list pointers nested append

这是我的代码:

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会继续在其他嵌套列表中添加值。

1 个答案:

答案 0 :(得分:1)

您正在将list_of_plants分配给该类,因此所有类实例将共享同一列表。您应该在self中将其分配为__init__的属性(即,将self.list_of_plants = []再缩进4个空格),以便为每个单独的类实例创建一个新列表。