Что такое self в Python и зачем он нужен в методах класса

Ответ

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

Он необходим для доступа к атрибутам и другим методам этого конкретного экземпляра изнутри класса.

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

  • Ссылка на экземпляр: self позволяет методу работать с данными, принадлежащими конкретному объекту. Например, self.name обращается к атрибуту name именно того экземпляра, у которого был вызван метод.
  • Явная передача: В отличие от некоторых других языков, в Python ссылка на экземпляр передается в метод явно в качестве первого аргумента. При вызове my_object.my_method(arg1) Python автоматически преобразует это в MyClass.my_method(my_object, arg1).
  • Соглашение (Convention): Использование имени self — это строгое соглашение (PEP 8), а не синтаксическое требование. Технически его можно назвать иначе, но это считается плохой практикой.

Пример:

class Dog:
    def __init__(self, name):
        # self.name — это атрибут экземпляра
        self.name = name

    def bark(self):
        # self используется для доступа к атрибуту name
        print(f"{self.name} says: Woof!")

dog1 = Dog("Rex")
dog2 = Dog("Buddy")

# self в методе bark() будет ссылаться на dog1
dog1.bark()  # Вывод: Rex says: Woof!

# А здесь self будет ссылаться на dog2
dog2.bark()  # Вывод: Buddy says: Woof!

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