170 похожих чатов

"Появляется переменная в экземпляре" - но она ведь присваивается в

self.i, я не догоняю до конца, почему в случае листа, это один и тот же лист, который также через self референсуется, а вслучае i там что то более сложная с возникновением частной переменной.

Вроде последнее предложение прояснило самому себе, типо через оператор += через его = создается как будто бы другая переменная со своим отдельным адресом, если бы посмотреть в виртуальные аддреса переменных ? И через = меняются референсы, так как в питоне у нас все присвоения они условно говоря shallow copy, просто указатель меняется на другую переменную.

А append ровно действует на ровно тот же лист с тем же адресом, как то так мне кажется.

2 ответов

17 просмотров

Смотри, есть такая штука как mro — method resolution order. Названа криво, потому что не только про методы, а про любые атрибуты. Она определяет, грубо говоря, с каким объектом мы будем работать при обращении по имени. obj.a будет искать атрибут a сперва в экземпляре, потом в классе, потом в родительских (по хитровывернутому алгоритму). Поэтому обращаясь к self.i ты в разное время можешь получать разное. Пока не присвоил — будет браться из класса. Первое же присвоение — и у экземпляра появляется такой атрибут и затеняет атрибут класса.

Ilya- Автор вопроса
evle
Смотри, есть такая штука как mro — method resoluti...

но мне кажется, это не до конца объясняет разницу в поведение. например, специально поменял оператор в случае с листом )) результат тот же

Похожие вопросы

Обсуждают сегодня

Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@NikaBelurgHR Бот? Ассемблер?
КТ315
11
юзеры Jetpack Compose тут?
Qtless Qtless
7
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Карта сайта