это мой код:
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
Почему Василий появляется в двух вложенных списках? Я даже не повлиял на значение во втором списке! Даже когда я смотрю на указатели, все выглядит хорошо, но append продолжает добавлять значения в другие мои вложенные списки.
Спасибо, что указали на правильную информацию






Вы назначаете list_of_plants классу, поэтому все экземпляры класса будут использовать один и тот же список. Вместо этого вы должны назначить его как атрибут self в __init__ (т. Е. Сделать еще 4 отступа как self.list_of_plants = []), чтобы новый список создавался для каждого отдельного экземпляра класса.
вам не хватает
self., список в вашем саду - это общий кусок земли, к которому имеют доступ все сады - общинная цветочная клумба ... прочитайте py-tut класс и переменные экземпляра