Back to questions
Junior — Middle
83
Каким образом реализуется принцип инкапсуляции в языке Python?
Companies where asked
ITFB Group
Answer from AI
sobes.tech AI
В Python инкапсуляция реализуется с помощью соглашений об именовании и специальных механизмов, так как язык не имеет строгой приватности, как в некоторых других языках.
- Публичные атрибуты и методы — имена без подчёркиваний, доступны везде.
- Защищённые (protected) атрибуты — имена с одним подчёркиванием
_attribute, сигнализируют, что элемент предназначен для внутреннего использования, но технически доступны извне. - Приватные (private) атрибуты — имена с двумя подчёркиваниями
__attribute, вызывают манглинг имени (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) # доступ через name mangling
Таким образом, инкапсуляция в Python — это скорее соглашение и использование механизмов манглинга, нежели строгие ограничения.