Чтобы решить проблему соглашений о дизайне, и, как сказал Кристофер, на самом деле в Python нет такой вещи, как «приват». Это может показаться странным для кого-то, пришедшего из C / C ++ фона (как я некоторое время назад), но в конечном итоге вы, вероятно, поймете, что следующих соглашений достаточно.
Видеть что-то с подчеркиванием спереди должно быть достаточно хорошим указанием, чтобы не использовать его напрямую. Если вы беспокоитесь о беспорядочном выводе help(MyClass)
(это то, на что все смотрят при поиске того, как использовать класс), подчеркнутые атрибуты / классы там не включены, так что в итоге вы просто получите свой "public" описанный интерфейс.
Плюс, если у всего публичного есть свои удивительные привилегии, как, например, вы можете тестировать модульно практически все извне (чего вы не можете сделать с закрытыми конструкциями C / C ++).