self
Имя для аргумента, представляющего текущий объект класса.
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
В разделе «Договорённости»:
cls
Константы (constants)
Скрытые атрибуты классов и модулей
Специализированные, дподчерк, магические методы
На заметку
Зарегистрированные пользователи могут публиковать свои Статьи.