Что такое protected-метод в ООП и как он реализуется в Python

Ответ

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())