Что такое инкапсуляция
Python
Middle
Без компании
Что такое инкапсуляция
Ответы
**Инкапсуляция** — это принцип ООП, который **объединяет данные (поля) и методы (функции) для работы с этими данными внутри одного объекта** и **скрывает внутреннюю реализацию объекта от внешнего вмешательства (как таковой защиты от изменения не существует, инкапсуляция лишь показывает, что "этот код трогать не надо, тут все работает")**. Это реализуется через механизм управления доступом:
· **Public (**`public_var`**):** Доступны откуда угодно.
· **Protected (**`_protected_var`**):** Сигнал для разработчика, что переменная предназначена для внутреннего использования в классе и его подклассах. Python не запрещает доступ, но это соглашение.
· **Private (**`__private_var`**):** Интерпретатор искажает имя переменной (`_MyClass__private_var`), делая сложным (но не невозможным) доступ к ней извне. Это предотвращает случайное переопределение внутренних атрибутов.
**Цель:** Управление сложностью, повышение надежности (предотвращение некорректного изменения состояния объекта) и обеспечение согласованности данных.
*Пример:*
```
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Приватный атрибут
def deposit(self, amount): # Публичный метод для изменения баланса
if amount > 0:
self.__balance += amount
def get_balance(self): # Публичный метод для получения баланса
return self.__balance
# Снаружи нельзя напрямую изменить __balance, только через методы
account = BankAccount(100)
account.deposit(50)
print(account.get_balance()) # 150
# account.__balance = 1000 # Не сработает, это создаст новый атрибут, а не изменит приватный
```