Middle
34
Какие механизмы инкапсуляции реализованы в Python?
Companies where asked
Answer from AI
sobes.tech AI
В Python инкапсуляция реализована через соглашения и механизмы ограничения доступа к атрибутам и методам класса:
- Публичные атрибуты и методы — доступны везде.
- Защищённые (protected) атрибуты — начинаются с одного подчёркивания
_attribute. Это лишь соглашение, что такие атрибуты не предназначены для внешнего использования. - Приватные (private) атрибуты — начинаются с двух подчёркиваний
__attribute. Python применяет механизм name mangling, изменяя имя атрибута внутри класса, чтобы затруднить доступ извне.
Пример:
class MyClass:
def __init__(self):
self.public = 1
self._protected = 2
self.__private = 3
obj = MyClass()
print(obj.public) # 1
print(obj._protected) # 2 (но по соглашению не стоит так делать)
# print(obj.__private) # Ошибка AttributeError
print(obj._MyClass__private) # 3, доступ через name mangling
Таким образом, инкапсуляция в Python больше основана на соглашениях и механизмах языка, а не на строгом ограничении доступа, как в некоторых других языках.