Какую роль выполняет self в методах класса Python

Ответ

self — это общепринятое имя для первого параметра метода экземпляра класса в Python. Он представляет собой ссылку на сам экземпляр, через который был вызван метод.

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

Ключевые моменты:

  • Это соглашение: Имя self не является ключевым словом. Технически его можно назвать как угодно, но отступление от этого соглашения крайне не рекомендуется (PEP 8).
  • Явная передача: Python передает ссылку на экземпляр в качестве первого аргумента неявно при вызове метода. Например, my_object.method(arg1) интерпретируется как MyClass.method(my_object, arg1).
  • Доступ к данным: Без self метод не сможет работать с состоянием объекта (его атрибутами).

Пример:

class Car:
    def __init__(self, model, color):
        # self.model создает атрибут экземпляра
        self.model = model
        self.color = color
        self.is_running = False

    def start_engine(self):
        # self.is_running обращается к атрибуту этого экземпляра
        if not self.is_running:
            self.is_running = True
            # self.display_status() вызывает другой метод этого же экземпляра
            print(f"Двигатель {self.model} запущен.")
        else:
            print(f"Двигатель {self.model} уже работает.")

my_car = Car("Tesla Model S", "Red")
my_car.start_engine() # Python неявно передает my_car в качестве self