Как работают разделяемые ссылки в классах? Из одного класса я создаю два объекта так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'. следовательно в случае разделяемых ссылок переменные, на них ссылающиеся, должны быть связаны таким образом, что при изменении одного списка, должен изменяться и второй тоже

21 Авг 2019 в 06:59
177 +1
0
Ответы
1

При выполнении строки 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]
20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир