Имя для аргумента, представляющего текущий объект класса.
self — это стандартное имя первого аргумента для методов объекта.

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

В противоположность некоторым другим языкам, в которых объект (экземпляр класса) доступен в методах под специальным именем (например, this) и не числится среди аргументов метода, в Питоне он обозначен явно.

В ходе исполнения метода объекта в первом аргументе автоматически окажется экземпляр класса (передевать его специально не требуется).

    class MyClass:

def say(self):
print(self)


my_1 = MyClass() # Создаём объект класса.
my_1.say() # <__main__.MyClass instance at 0x7f8e8c6383f8>

Можно вызвать метод и в качестве несвязанного метода (метода класса), однако в этом случае передать объект придётся самостоятельно.

    MyClass.say(my_1)  # <__main__.MyClass instance at 0x7f8e8c6383f8>

Внимание
Если передать в несвязанный [с объектом] метод класса объект, тип которого не совпадает с типом класса, в котором определён метод, поведение в Python 3 отличается от Python 2. Смотрите пример ниже.

    MyClass.say('нечто')  
# Python 3: нечто
# Python 2: TypeError: unbound method say() must be called with MyClass instance as first argument (got str instance instead)

Синонимы поиска: self, this, that
На заметку
У нас есть представительство во ВКонтакте. Ссылка в самом низу страницы.