Хотя ответили, позвольте мне добавить несколько комментариев к вашим вопросам:
объявление переменной в классе (вне функции): все функции класса могут получить к ней доступ (в основном, публичная переменная):
комментарий: это похоже на статическую переменную и может быть вызвано с использованием имени класса. Эти переменные доступны для всех функций, любые функции могут изменить их и распечатать.
объявление переменной внутри функции внутри класса: только эта функция может получить к ней доступ (в этой области функций):
комментарий: если переменная объявлена без self, то она доступна только внутри этой функции, вроде локальной переменной. Однако, если он объявил использование self наподобие self.var = 'somevalue' ,, то он доступен через любой объект, но не через имя класса.
объявление переменной с self. (Имя переменной) внутри функции внутри класса: все функции класса могут получить к ней доступ (чем она отличается от глобальной (имя переменной)?):
комментарий: см. ответ в вышеуказанной части.
и поскольку нет частного / защищенного, все является общедоступным, поэтому все доступное внутри класса доступно извне класса .:
комментарий: да, но мы можем использовать одно подчеркивание, чтобы сообщить миру, что эта переменная является закрытой, но технически это не делает ее закрытой.