Ваше наблюдение верно. Это не обычный стиль программирования на Python. Все атрибуты являются общедоступными, поэтому вы просто получаете (получаете, устанавливаете, удаляете) их, как если бы вы использовали атрибуты любого объекта, который их имеет (не только классы или экземпляры). Легко понять, когда Java-программисты изучают Python, потому что их код Python выглядит как Java с использованием синтаксиса Python!
Я определенно согласен со всеми предыдущими постерами, особенно с ссылкой Максимилиано на знаменитую статью Филиппа и @ Макса о том, что нужно использовать что-нибудь более сложное, чем стандартный способ установки (и получения) атрибутов класса и экземпляра Свойства (или дескрипторы, чтобы обобщить еще больше), чтобы настроить получение и установку атрибутов! (Это включает возможность добавлять свои собственные индивидуальные версии приватной, защищенной, дружественной или любой другой политики, которую вы хотите, если вы хотите что-то, кроме общедоступного.)
В качестве интересной демонстрации в Core Python Programming (глава 13, раздел 13.16) я привел пример использования дескрипторов для хранения атрибутов на диске, а не в памяти !! Да, это странная форма постоянного хранения, но показывает пример того, что возможно!
Вот еще один похожий пост, который вы также можете найти полезным:
Python: несколько свойств, один установщик / получатель