Back to questions
Junior — Middle
80
Можно ли объяснить принцип инкапсуляции в Python и как он реализуется?
Answer from AI
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 основана на соглашениях и механизмах, а не на строгих ограничениях, как в некоторых других языках.