Есть задачка на Создание копии экземлпяра. И когда мы создаем поверхностную копию экземпляра х y=copy(x), то по идеи у нас должны меняться 2 значения name и nums. Но меняется только nums, код ниже. Не могу догнать этот момент почему так? Про полные списки понятно.
from copy import copy, deepcopy
class MyClass:
def __init__(self, name, nums):
self.name=name
self.nums=nums
def show(self):
print("name ->", self.name)
print("nums ->", self.nums)
x=MyClass("Python", [1,2,3])
print("Экземпляр х:")
x.show()
#копии - поверхностная, полная
y=copy(x)
z=deepcopy(x)
print("Экземпляр y:")
y.show()
print("Экземпляр z:")
z.show()
print("Поля экземпляра х изменяются")
x.name="Java"
x.nums[0]=0
print("Экземпляр x:")
x.show()
print("Экземпляр y:")
y.show()
print("Экземпляр z:")
z.show()
ответ такой
Экземпляр x:
name -> Java
nums -> [0, 2, 3]
Экземпляр y:
name -> Python Должен же измениться???
nums -> [0, 2, 3]
Экземпляр z:
name -> Python
nums -> [1, 2, 3]