Sobes.tech
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 больше основана на соглашениях и механизмах языка, а не на строгом ограничении доступа, как в некоторых других языках.