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