Этот вопрос проверяет понимание принципа инкапсуляции, который ограничивает доступ к данным и методам объекта, обеспечивая их безопасность.
Инкапсуляция — это принцип ООП, который ограничивает доступ к данным объекта, предоставляя контролируемый способ их изменения через методы. В Python для инкапсуляции используются уровни доступа: публичный, защищённый и приватный, обозначаемые через имена атрибутов (_protected, __private).
Инкапсуляция помогает скрыть внутреннюю реализацию объекта и ограничить прямой доступ к его данным, что позволяет избежать некорректного использования. В Python используется:
Публичные атрибуты: доступны везде.
Защищённые атрибуты: начинаются с _. Это соглашение, сигнализирующее о том, что атрибут не предназначен для прямого использования.
Приватные атрибуты: начинаются с __. Они автоматически "обфусцируются" (переписываются для предотвращения случайного доступа).
Пример:
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Приватный атрибут
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
def get_balance(self):
return self.__balance
account = BankAccount(100)
account.deposit(50)
print(account.get_balance()) # 150
# print(account.__balance) # Ошибка: доступ запрещёнИнкапсуляция делает объекты защищёнными от случайных изменений, сохраняя их состояние консистентным.