Причина, по которой вам нужно использовать self.
, заключается в том, что Python не использует синтаксис @
для ссылки на атрибуты экземпляра. Python решил делать методы таким образом, чтобы автоматически использовать экземпляр, к которому принадлежит этот метод, , переданный , но не получен : первым параметром методов является экземпляр метода вызывается. Это делает методы полностью такими же, как и функции, и оставляет фактическое имя для использования до вас (хотя self
является конвенцией, и люди обычно будут хмуриться вам, когда вы используете что-то другое.) self
не является особым для код, это просто еще один объект.
Python мог бы сделать что-то еще, чтобы отличить нормальные имена от атрибутов - специальный синтаксис, например Ruby, или требовать объявления, подобные C ++ и Java, или, возможно, что-то еще более отличающееся - - но это не так. Python все для того, чтобы сделать вещи явными, делая это очевидным, что к чему, и хотя он не делает это целиком повсюду, он делает это, например, атрибуты. Вот почему назначение атрибуту экземпляра должно знать, какой экземпляр присваивается, и поэтому ему нужно self.
.
Установите переменную indent-tabs-mode
. Вы можете сделать это, настроив переменную с M-x customize-variable
, на лету с помощью M-x set-variable
или в Elisp с функцией setq
.