Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

self простыми словами

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

self — это «я сам»

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

Почему его не передают

При вызове d.harvest() вы не пишете self — Python подставляет его сам, зная, что метод вызван у объекта d. Поэтому в определении self есть, а при вызове его нет.

class Drone:
    def __init__(self, name):
        self.name = name
    def say(self):
        print('Я', self.name)

Drone('Пинг').say()   # Я Пинг

Зачем он нужен

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

Частые вопросы

Нужно ли передавать self при вызове? Нет, Python подставляет его автоматически.

Можно ли назвать не self? Технически да, но это против традиции — всегда пишите self.

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание