import copy
# Первый вариант: если создаю свойство вне конструктора, то глубокое копирование не помогает и при изменении
# объекта в переменной a, он изменяется и для переменной b
class A:
a = [1, 2]
a = A()
b = copy.deepcopy(a)
a.a[0] = 5
a.a
[5, 2]
b.a
[5, 2]
# Второй вариант: если создаю свойство в конструкторе, то глубокое копирование помогает и при изменении
# объекта в переменной a, он не изменяется для переменной b
class A:
def __init__(self):
self.a = [1, 2]
a = A()
b = copy.deepcopy(a)
a.a[0] = 5
a.a
[5, 2]
b.a
[1, 2]
Почему это так работает ? И в чем различия добавление свойств классу в первом и втором варианте ?