Как работают разделяемые ссылки в классах? Из одного класса я создаю два объекта так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
151 +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 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир