Python

Что такое self, я знаю что он указывает на конкретный экземпляр но все таки зачем он нужен? Не понятно просто

self обозначает экземпляр класса, т. е. когда ты создаешь класс, то его внутренние переменные, определяются через self.

Например:
а = 1
Это просто переменной присвоено значение

А если внутри класса:
self.a = 2

При выводе получаем:
>>> print(a)
1
>>> b = ClassName()
>>> print(b.a)
2
Михаил Лычагин
Михаил Лычагин
71
Лучший ответ
Андрей Михальчук Тоесть в классе переменные в self объявлять
Андрей Михальчук Self переводится как собственная личность или сам
Ну как я себе представляю в меру своих поверхностных знаний предмета..

Грубо, класс содержит поля для хранения состояния объекта и методы для определения поведения объекта.
При создании нового объекта (экземпляра класса) конструктором выделяется память для его хранения и возвращается ссылка на созданный объект (адрес выделенной памяти). Объект хранится в виде данных всех его полей и ссылок на таблицу методов класса. Таблица методов общая для всех экземпляров (поведение объекта), значения полей, понятное дело, для каждого экземпляра разные (состояние объекта).
Так вот, ссылка self делает возможным отыскать значения полей по адресу в памяти и прочитать состояние объекта.. И затем уже, используя известное состояние объекта, можно выводить информацию о нем, менять состояние и прочее, вызывая методы класса, в которых учитываются значения полей данного экземпляра..

Поправляйте..)
Вячеслав"тюряга" Челябинский относительно питонов..
выделяется память магией __new__()
заполняются значения полей магией __init__()
Class A:
def __init__ (self):
self.name = "Test"
------------------------------
MyObject = A()
print(MyObject.a) --> Test
Т. е в этом де коде создание класса вместо self поставь имя переменной, которой мы присваиваем экземпляр класса:
------------------------------
Class A:
def __init__ (MyObject):
MyObject.name = "Test"
-------------------------------
MyObject = A()
print(MyObject.a) --> Test
------------------------------
Надеюсь объяснять что такое __init__ не надо.