Как работают разделяемые ссылки в классах? Из одного класса я создаю два объекта такclass qw: a = [1, 2] x = qw() y = qw() print(x.a, y.a) x.a = x.a.append(3) print(x.a, y.a) В результате выполнения, получаю следующий вывод[1, 2] [1, 2] None [1, 2, 3] Объясните пожалуйста почему выводится None, а затем результат успешного добавления? Я понимаю так. 1. x, y это два отдельных объекта, созданных на основе общего класса 2. x, y это не примитивные классы типа '1' или 'a'. следовательно в случае разделяемых ссылок переменные, на них ссылающиеся, должны быть связаны таким образом, что при изменении одного списка, должен изменяться и второй тоже
При выполнении строки x.a = x.a.append(3) происходит следующее:
Метод append(3) изменяет список x.a, добавляя элемент 3 и возвращает None.После этого результат выполнения метода append(3) присваивается переменной x.a, поэтому x.a становится равным None.
Чтобы исправить это, вам нужно удалить x.a = из строки кода, чтобы метод append(3) был применен непосредственно к списку x.a:
При выполнении строки x.a = x.a.append(3) происходит следующее:
Метод append(3) изменяет список x.a, добавляя элемент 3 и возвращает None.После этого результат выполнения метода append(3) присваивается переменной x.a, поэтому x.a становится равным None.Чтобы исправить это, вам нужно удалить x.a = из строки кода, чтобы метод append(3) был применен непосредственно к списку x.a:
x.a.append(3)Теперь вывод будет:
[1, 2] [1, 2][1, 2, 3] [1, 2, 3]