Python, class, self. Немного о том что такое self в конструкторе класса и зачем он(и в методах класса). Моё понимание

Данная интерпретация имеет свободный характер и не претендует на истину последней инстанции.

Я понимаю это так. Когда создаём объект класса, то отдельно в памяти выделяется под неё место, куда записываются имя объекта, параметры (унаследованные от родительского класса) и их значения (заполненные конструктором класса). Но также объект наследует от своего класса и методы. Но метод это не переменная. Это некий программный код, который имеет входные значения, что-то с ними делает и выдаёт или нет результат. Значит нет необходимости дублировать код методов для каждого объекта — он будет для всех объектов одинаков. Потому он хранится (код методов ) в единичном экземпляре где-то в теле класса. И если для конкретного объекта необходимо вызвать его метод — то программа в этом месте просто переходит к тому самому, единственному экземпляру кода этого метода, который хранится в классе — передаёт ему на вход параметры и выполняет его. Но если код единственный, то как он поймёт с данными какого объекта он сейчас работает? Вот для этого и используется self — здесь неявно передаётся указатель на конкретный объект. И когда метод выполняется и внутри него есть сочетание self.переменная — то программа понимает что вместо self на самом деле как бы можно поставить имя конкретного объекта. И обращение происходит к конкретной переменной конкретного объекта.

Почему неявно передаётся указатель на объект? Потому, что при вызове метода объекта — мы не передаём имя объекта в качестве параметров. Обычно мы вызываем метод в виде Объект.Его_метод(параметры,..). Мы в начале указываем имя объекта. Это для простоты понимания кода. Но в само деле выглядит это как Класс.Его_метод(указатель_на_объект,параметры,….)

Оставлю себе на память.

One thought on “Python, class, self. Немного о том что такое self в конструкторе класса и зачем он(и в методах класса). Моё понимание

  1. The self Parameter
    The self parameter is a reference to the current instance of the class, and is used to access variables that belongs to the class.

    It does not have to be named self , you can call it whatever you like, but it has to be the first parameter of any function in the class:

    Только что прочёл вот здесь https://www.w3schools.com/python/python_classes.asp
    Выходит я правильно для себя интерпретировал. Но здесь говорится ещё больше — не важно что написано вместо self. Там может использоваться любое слово. Главное что его задача от этого не поменяется — первый параметр — это указатель на сам объект класса.

Добавить комментарий

Ваш адрес email не будет опубликован.