Sobes.tech
Назад к вопросам
Junior — Middle
81

Можно ли объяснить принцип инкапсуляции в Python и как он реализуется?

Ответ от нейросети

sobes.tech AI

В Python инкапсуляция реализуется через соглашения об именовании и механизмы ограничения доступа к атрибутам и методам класса.

  • Атрибуты и методы, начинающиеся с одного подчеркивания (_attribute), считаются "защищёнными" (protected) — это соглашение, что они не предназначены для использования вне класса или его наследников.
  • Атрибуты и методы с двойным подчеркиванием в начале (__attribute) вызывают механизм "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._MyClass__private)  # 3 (доступ к "приватному" атрибуту через name mangling)

Таким образом, инкапсуляция в Python основана на соглашениях и механизмах, а не на строгих ограничениях, как в некоторых других языках.