Что такое self в Python?

«Что такое self в Python?» — вопрос из категории Python, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Зачем это нужно:

  • Python не делает этого автоматически. Явное указание self делает работу с атрибутами экземпляра предсказуемой.
  • Позволяет отличать атрибуты экземпляра от локальных переменных метода и атрибутов класса.

Пример:

class User:
    # Атрибут класса
    platform = "MyApp"

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

    def introduce(self):
        # Обращение к атрибуту экземпляра через self
        return f"Меня зовут {self.name}, мне {self.age} лет. Я с платформы {self.platform}."

# Создаем экземпляры
user1 = User("Анна", 30)
user2 = User("Петр", 25)

print(user1.introduce()) # self внутри introduce ссылается на user1
print(user2.introduce()) # self внутри introduce ссылается на user2

Важно: Название self — это соглашение, а не строгое правило языка, но его повсеместно используют и настоятельно рекомендуют придерживаться.