В Python нет строгих модификаторов доступа, как в C++ или Java (public, private, protected). Вместо этого используется концепция "сильной рекомендации" и "соглашения об именовании".
Видимость атрибутов и методов контролируется через префиксы в их именах:
Публичные (public): Атрибуты и методы без префиксов. Доступны извне класса.
python
Защищенные (protected): Атрибуты и методы с префиксом _. Это соглашение, указывающее, что они предназначены для использования внутри класса и его подклассов. Доступ извне возможен, но не рекомендуется.
python
Приватные (private): Атрибуты и методы с префиксом __ (два нижних подчеркивания). Python выполняет "сокрытие имен" (name mangling), изменяя имя атрибута/метода, чтобы сделать прямой доступ извне сложнее.
python
Влияние на видимость:
public: Видимы и доступны везде.protected: Видимы и доступны везде, но по соглашению предназначены для внутреннего использования.private: Видимы и доступны только внутри класса, прямое имя искажается, что затрудняет доступ извне.Таблица сравнения:
| Модификатор | Префикс | Прямой доступ извне класса | Рекомендованное использование | Механизм |
|---|---|---|---|---|
| Public | Нет | Да | Внешнее использование | Нет |
| Protected | _ | Да (по соглашению нет) | Внутреннее, подклассы | Соглашение |
| Private | __ | Нет (имя искажено) | Внутреннее | Name Mangling |