Только приступил к изучению. Из Бизли:
“Классы определяют собственные пространства имен, но они не образуют области видимости для имен, используемых внутри методов… Например, ссылки на атрибуты в методах всегда должны производиться относительно имени self.”
1. Про пространство имен понял так: чтобы получить доступ к свойству инстанса, нужно написать Инстанс.свойство. Либо к одноименному классу из другого пакета: ИмяПакета.ИмяКласса.СтатикСвойство.
2. Про область видимости не понял. Если в нескольких методах одного класса есть переменная с одним и тем же именем, то она что - будет “перекрываться”? Присвоили значение переменной spam из одного метода - и все переменные spam из других методов получили тоже значение?
3. “Отсутствие собственной области видимости в методах классов - это одна из особенностей, отличающих Python от C+ или Java. … аргумент self в Python - это то же самое, что указатель this”.
С this не работал, поэтому не понимаю о чем речь. Можете объяснить, что за механика за этим скрывается?