Что такое инкапсуляция в Python
Python
Senior
Без компании
Что такое инкапсуляция в Python
Ответы
Инкапсуляция — это принцип ООП, который ограничивает доступ к данным и методам класса, скрывая внутреннюю реализацию. В Python нет строгой инкапсуляции, но есть соглашения:
- **Публичные атрибуты** — доступны везде.
- **Защищённые (protected)** — с одним подчёркиванием `_attr`. Условное указание, что атрибут не предназначен для внешнего использования.
- **Приватные (private)** — с двумя подчёркиваниями `__attr`. Интерпретатор искажает имя (`_ClassName__attr`), затрудняя доступ извне.
Пример:
```
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Приватный атрибут
def deposit(self, amount):
self.__balance += amount
def get_balance(self): # Публичный метод для доступа
return self.__balance
account = BankAccount(100)
print(account.get_balance()) # 100
# print(account.__balance) # Ошибка! AttributeError
```
**Важно:** Python не запрещает доступ к приватным атрибутам (можно через `_BankAccount__balance`), но это нарушает инкапсуляцию.