← Все вопросы

Что такое self в Python и зачем он в каждом методе?

Задан 11 месяцев назад1.3к просмотров3 ответа
21

Только начал разбираться с классами. Не понимаю, что за self пишут первым аргументом в каждом методе и почему его не передают при вызове. Объясните на пальцах, пожалуйста.

3 ответа

33
✓ Принятый ответ — помог автору

self — это сам объект, у которого вызвали метод. Когда ты пишешь dog.bark(), Python под капотом превращает это в Dog.bark(dog) и подставляет твой объект первым аргументом. Поэтому ты его не передаёшь руками — Python делает это за тебя.

Зачем он нужен: через self метод обращается к данным конкретного объекта. У одного пса кличка "Рекс", у другого "Шарик" — оба хранятся в self.name, но self у них разный, поэтому и значения разные:

class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name}: гав!")

rex = Dog("Рекс")
rex.bark()  # Рекс: гав!

Без self метод не знал бы, с каким именно объектом он работает.

Полина Алексеева то есть self это просто "я сам" для объекта, удобно так запомнить · 10 месяцев назад
Лев Герасимов вот теперь дошло, спасибо 🙏 · 10 месяцев назад
11

Грубо говоря, self = "этот конкретный объект". Имя self не зарезервировано, можно назвать как угодно, но по соглашению всегда пишут self. Не нарушай это, иначе люди не поймут твой код.

2

Это ссылка на текущий экземпляр.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект