__variable), можно получить доступ, используя _ClassName__variable.В Python инкапсуляция, в отличие от таких языков, как Java или C++, не является строгой. Это означает, что ограничения, связанные с инкапсуляцией, больше носят характер соглашений и рекомендаций, чем жестких правил, enforcing by the language itself. Вот основные ограничения и особенности, о которых стоит помнить:
Отсутствие реальной приватности:
_my_attribute), считаются "защищенными".  Это означает, что они предназначены для внутреннего использования внутри класса и его подклассов.  Тем не менее, доступ к ним извне класса все еще возможен. Это больше похоже на устное соглашение между разработчиками.__my_attribute), подвергаются name mangling.  Python переименовывает эти атрибуты, добавляя к ним имя класса (например, _MyClass__my_attribute). Это усложняет прямой доступ к атрибуту извне класса, но не делает его невозможным. Этот механизм скорее предназначен для предотвращения конфликтов имен в подклассах, чем для обеспечения реальной приватности.Ограничения, основанные на соглашениях:
Отсутствие строгих модификаторов доступа:
private, protected или public, для явного указания уровня доступа к атрибутам.Использование свойств (properties):
@property) можно использовать для контроля доступа к атрибутам и выполнения логики при чтении, записи или удалении атрибута.Итог: Инкапсуляция в Python больше опирается на соглашения и доверие, чем на строгие языковые механизмы. Разработчики должны понимать, что "приватные" атрибуты не являются действительно приватными, и использовать свойства для более строгого контроля доступа к атрибутам, если это необходимо.