- Инкапсуляция – это принцип объектно-ориентированного программирования, при котором данные и методы объединяются в одной структуре (классе), а доступ к внутренней реализации объекта ограничивается.
- В Python степени доступности реализуются через соглашения об именовании атрибутов и методов.
- Цели инкапсуляции определяют различные уровни доступа:
- защита внутреннего состояния объекта достигается использованием имени вида __name, которое ограничивает прямой доступ к данным извне (механизм name mangling);
- контролируемое использование в наследовании обозначается именами вида __name, показывающими, что атрибут предназначен для использования внутри класса и его наследников;
- предоставление интерфейса реализуется через обычные методы класса без специальных префиксов, через которые происходит взаимодействие с объектом.
- Соответствие целей и модификаторов доступа:
Цель инкапсуляции | Реализация в Python | Эффект |
|---|---|---|
Полное сокрытие реализации | __name | Атрибут предназначен только для использования внутри класса |
Безопасное наследование | __name | Атрибут используется внутри класса и его наследников |
Предоставление интерфейса | name | Метод или атрибут доступен из любого места программы |