Инкапсуляция — принцип ООП, который ограничивает прямой доступ к внутреннему состоянию объекта и требует взаимодействия через определённые методы. Это защищает целостность данных и скрывает детали реализации от внешнего кода.
Python не принудительно применяет контроль доступа на уровне языка. Вместо этого он полагается на соглашения об именовании, которые сигнализируют о предполагаемой видимости:
name — Public: доступно отовсюду, без ограничений_name — Protected: сигнализирует «только для внутреннего использования», но доступ технически не блокируется__name — Private: запускает name mangling, переименовывая атрибут в _ClassName__name, чтобы снизить риск случайного доступаclass BankAccount:
def __init__(self, balance):
self.__balance = balance # private attribute
def get_balance(self):
return self.__balance # accessed via public method
account = BankAccount(100)
print(account.get_balance()) # works correctly
print(account.__balance) # raises AttributeError
print(account._BankAccount__balance) # works, but strongly discouraged
__name, когда хочешь явно discourage внешний доступ и избежать случайных переопределений в подклассахДвойное подчеркивание в Python (__name) физически препятствует доступу к приватным атрибутам извне любым способом.
Новый — ещё не проверен сообществом
Вы