Как реализуются private методы в Python
Python
Middle
Без компании
Как реализуются private методы в Python
Ответы
В Python нет строгой инкапсуляции, но есть соглашение об именовании для обозначения приватных методов и атрибутов.
- **Одиночное подчеркивание (`_method`)** – условно приватный метод (convention). Не запрещает доступ, но сигнализирует, что метод предназначен для внутреннего использования.
- **Двойное подчеркивание (`__method`)** – вызывает name mangling (искажение имени), чтобы избежать случайного переопределения в подклассах.
```
class MyClass:
def _internal_method(self):
print("Internal use")
def __private_method(self):
print("Name-mangled")
obj = MyClass()
obj._internal_method() # Работает, но не рекомендуется
obj.__private_method() # Ошибка! Доступ через _MyClass__private_method
```
**Важно:**
- Это лишь соглашение, а не строгая защита.
- Для настоящей инкапсуляции можно использовать `@property` или декораторы.