Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Protected методы в Python
Protected метод — это метод класса, предназначенный для использования внутри класса и его подклассов. В Python это обозначается одним подчёркиванием в начале имени.
Основное определение
class Animal:
def __init__(self, name):
self.name = name
def _move(self):
"""Protected метод"""
print(f"{self.name} движется")
def public_action(self):
"""Публичный метод"""
self._move() # Можно вызвать внутри класса
Три уровня доступа
1. Public (публичный):
class Car:
def drive(self):
pass
car = Car()
car.drive() # ОК - доступен везде
2. Protected (защищённый) — _method:
class Vehicle:
def _start_engine(self):
pass
class Car(Vehicle):
def drive(self):
self._start_engine() # ОК в подклассе
car = Car()
car._start_engine() # Технически работает, но не рекомендуется
3. Private (приватный) — __method:
class Secret:
def __hide(self):
pass
def public(self):
self.__hide() # ОК
s = Secret()
s.__hide() # Error - недоступно
Переопределение в подклассах
class Shape:
def area(self):
return self._calculate_area()
def _calculate_area(self):
raise NotImplementedError
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def _calculate_area(self):
return 3.14 * self.radius ** 2
circle = Circle(5)
print(circle.area()) # 78.5
Лучшие практики
- Используй
_methodдля методов, не входящих в публичный API - Protected методы часть контракта для подклассов
- Избегай глубокой иерархии с protected методами
- Тестируй protected методы отдельно
- Документируй, когда можно переопределять
Protected методы — это соглашение Python, основанное на доверии разработчикам, что они будут уважать инкапсуляцию и не вызывать методы, начинающиеся с подчёркивания, из внешнего кода.