В чем разница между private и protected методами
Python
Middle
Без компании
В чем разница между private и protected методами
Ответы
В Python нет строгой приватности, но есть соглашения:
**Protected** (один подчерк `_method`) — метод предназначен для внутреннего использования в классе и его наследниках. Доступ извне возможен, но не рекомендуется.
**Private** (два подчерка `__method`) — более строгое ограничение. Интерпретатор переименовывает метод (`_ClassName__method`), чтобы затруднить доступ извне. Используется, когда нужно избежать случайного переопределения в дочерних классах.
Пример:
```
class MyClass:
def _protected(self):
print("Protected method")
def __private(self):
print("Private method")
obj = MyClass()
obj._protected() # Работает (но не рекомендуется)
obj.__private() # Ошибка! Доступ через obj._MyClass__private()
```
Важно: это лишь соглашение, Python доверяет разработчику. Для настоящей инкапсуляции используют свойства (`@property`) или документацию.