Back to questions
Ozon Финтех
Middle+
9
Как реализуется инкапсуляция в Python? Расскажи про модификаторы доступа.
Companies where asked
Answer from AI
sobes.tech AI
В Python инкапсуляция реализуется через соглашения об именовании и свойства классов, так как строгих модификаторов доступа, как в других языках (private, protected, public), нет.
- Публичные атрибуты и методы — имена без подчеркиваний, доступны везде.
- Защищённые (protected) — имена с одним ведущим подчеркиванием
_var. Это соглашение, что атрибут или метод предназначен для внутреннего использования, но технически доступен извне. - Приватные (private) — имена с двумя ведущими подчеркиваниями
__var. Python применяет манглинг имен (name mangling), изменяя имя атрибута внутри класса, чтобы затруднить доступ извне.
Пример:
class MyClass:
def __init__(self):
self.public = "доступно всем"
self._protected = "рекомендуется не использовать вне класса и наследников"
self.__private = "скрыто от прямого доступа"
obj = MyClass()
print(obj.public) # работает
print(obj._protected) # работает, но не рекомендуется
# print(obj.__private) # вызовет ошибку
print(obj._MyClass__private) # доступ через манглинг имен
Таким образом, инкапсуляция в Python — это скорее соглашение и механизм манглинга, а не строгие модификаторы доступа.