Что такое инкапсуляция
Инкапсуляция — это принцип ООП, который объединяет данные (поля) и методы (функции) для работы с этими данными внутри одного объекта и скрывает внутреннюю реализацию объекта от внешнего вмешательства (как таковой защиты от изменения не существует, инкапсуляция лишь показывает, что "этот код трогать не надо, тут все работает"). Это реализуется через механизм управления доступом:
· 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 # Не сработает, это создаст новый атрибут, а не изменит приватный
офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру