История изменений
Исправление Virtuos86, (текущая версия) :
Я тупой
Согласен.
Можно рассматривать self
как доступ к неймспейсу экземпляра (инстанса, instance) класса. Чтобы объект мог вызывать свои методы и брать значения из своих же атрибутов, ему надо как-то получить к ним доступ. В глобальном пространстве имен их, естественно, не видно, в локальном — тоже, как быть? Питон пихает в каждый метод экземпляра класса ссылку на него самого («self» внезапно переводится как «сам»), это такое соглашение — пихать первым, хотя можно было и последним и любым по порядку. Еще одно соглашение, но вообще устное и якобы необязательное, это называть self self'ом, потому что в синтаксическом плане это обычный аргумент функции, и его можно именовать как угодно.
Под капотом этот механизм довольно логично устроен и продуман, но человеку, не могущему понять, что переменная «self» в параметрах метода экземпляра класса это ссылка на его неймспейс, до таких деталей скоро не добраться.
А ведь есть еще и cls
:D.
Исходная версия Virtuos86, :
Я тупой
Согласен.
Можно рассмативать self
как доступ к неймспейсу экземпляра (инстанса, instance) класса. Чтобы объект мог вызывать свои методы и брать значения из своих же атрибутов, ему надо как-то получить к ним доступ. В глобальном пространстве имен их, естественно, не видно, в локальном — тоже, как быть? Питон пихает в каждый метод экземпляра класса ссылку на него самого («self» внезапно переводится как «сам»), это такое соглашение — пихать первым, хотя можно было и последним и любым по порядку. Еще одно соглашение, но вообще устное и якобы необязательное, это называть self self'ом, потому что в синтаксическом плане это обычный аргумент функции, и его можно именовать как угодно.
Под капотом этот механизм довольно логично устроен и продуман, но человеку, не могущему понять, что переменная «self» в параметрах метода экземпляра класса это ссылка на его неймспейс, до таких деталей скоро не добраться.
А ведь есть еще и cls
:D.