Ответ
Protected-метод (защищенный) — это концепция в ООП, обозначающая метод, который предназначен для использования только внутри самого класса и его дочерних классов (наследников). Он не является частью публичного API.
Реализация в Python
В Python нет строгой инкапсуляции, как в Java или C++. Защищенные методы реализуются по соглашению (convention):
- Имя такого метода начинается с одного нижнего подчеркивания (
_
). Например,_my_method
. - Это является сигналом для других разработчиков: "Не используйте этот метод напрямую извне класса, он может измениться без предупреждения".
Ключевая особенность: Интерпретатор Python не запрещает доступ к protected
-методам извне. Соблюдение этого правила остается на совести программиста.
Пример
class Gadget:
def __init__(self, name):
self.name = name
def _get_internal_id(self):
# Внутренняя логика, не предназначенная для внешнего вызова
return f"ID-{hash(self.name)}_internal"
def get_info(self):
# Публичный метод использует защищенный для своей работы
print(f"Gadget: {self.name}, Internal ID: {self._get_internal_id()}")
class SuperGadget(Gadget):
def get_advanced_info(self):
# Наследник может безопасно использовать protected-метод родителя
print(f"Advanced info relies on {self._get_internal_id()}")
phone = Gadget("iPhone")
phone.get_info() # Правильное использование через публичный API
# Не рекомендуется, но технически возможно:
print(phone._get_internal_id())