Как в Python реализована инкапсуляция классов

Python Junior Без компании
Как в Python реализована инкапсуляция классов
Ответы
В Python инкапсуляция реализована через соглашения об именовании, а не строгие модификаторы доступа. - **Публичные** атрибуты: обычные имена (`var`) - **Защищённые** (protected): одно подчёркивание (`_var`). Это соглашение, что атрибут не предназначен для внешнего использования, но доступ остаётся. - **Приватные** (private): два подчёркивания (`__var`). Интерпретатор искажает имя (`_ClassName__var`), что затрудняет доступ извне, но не блокирует полностью. Пример: ``` class MyClass: def __init__(self): self.public = 1 # публичный self._protected = 2 # защищённый self.__private = 3 # приватный obj = MyClass() print(obj.public) # 1 print(obj._protected) # 2 (но не рекомендуется) print(obj._MyClass__private) # 3 (обход приватности) ``` Для управления доступом используют декораторы `@property`, `@attr.setter`.