Достаточно часто встречаю вопросы о приватных полях и методах в Python от людей, кто раньше программировал на Java (или С++). Вот только в питоне класс - это не совсем то же, что и в Java. В питоне класс - это просто контейнер, содержимое которого доступно всем.

"Приватные" поля - это всего лишь договоренность по именам, которая никак не мешает работать с такими полями из любого места кода. Добавление имени класса к имени переменной - слабая защита.

Из этого вытекает пара правил использования подобных переменных:

  • Не особо рассчитывайте, что значение "приватной" переменной всегда будет правильным. Проверками в критичных местах системы не стоит пренебрегать.
  • Либо из имени переменной, либо из кода ее окружающего, либо из документации должно быть понятно что она делает и какие методы доступа к ней использовать. Особенно актуально, если переменная - список или словарь.


c