Расскажи про три типа инкапсуляции в Python

Python Junior Без компании
Расскажи про три типа инкапсуляции в Python
Ответы
В Python инкапсуляция реализуется через соглашения об именовании и механизмы доступа. - **Public** – атрибуты доступны везде. По умолчанию все атрибуты публичные. ``` class Example: def __init__(self): self.public_attr = 10 obj = Example() print(obj.public_attr) # 10 ``` - **Protected** – атрибуты с одним подчёркиванием `_`. Условно защищённые, доступны, но считаются внутренними. ``` class Example: def __init__(self): self._protected_attr = 20 obj = Example() print(obj._protected_attr) # 20 (но не рекомендуется) ``` - **Private** – атрибуты с двумя подчёркиваниями `__`. Интерпретатор искажает имя (`_ClassName__attr`), предотвращая прямой доступ. ``` class Example: def __init__(self): self.__private_attr = 30 obj = Example() print(obj.__private_attr) # Ошибка! Доступ через obj._Example__private_attr ``` Важно: Python не запрещает доступ, а лишь усложняет его, следуя принципу "Мы все взрослые здесь".