LINUX.ORG.RU

[python] список объектов, что-то странное

 


0

1

http://pastebin.com/0f6k1ju0

делаем список из трех экземпляторов класса a. добавляем в первый в его list один элемент - он добавляется сразу во все. изменяем int первого - изменяется только он.

почему элемент добавляется сразу во все list?



Последнее исправление: luethus (всего исправлений: 1)

Потому что list — один. Он создаётся ещё при создании _класса_. Int тоже один, но при присваивании возникает новый. Если заменить arr[0].list.append('something') на arr[0].list = ['a'], то рез-т изменится.

Короче, это связано с ссылками и объектами. Тут лучше один раз почитать хорошую документацию, чем каждый раз удивляться частному проявлению принципа (например, a=[1];b=a;a.append(2) не равно a=[1];b=a;a=a+[2])

vkos ★★
()

Эти и ещё другие удивительные вещи написаны в tutorial в первой главе.

true_admin ★★★★★
()
Ответ на: комментарий от luethus

Ну блин, ну сколько можно! Минимум раз в месяц пишется пост содержащий этот вопрос =/

theos ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.