Встречается на собеседованиях • сегодня
Как используешь инкапсуляцию на практике
В Python инкапсуляция реализуется через соглашения об именовании и свойства (@property). Хотя Python не имеет строгой инкапсуляции, как в Java, принято использовать _ и __ для обозначения защищённых и приватных атрибутов.
Пример:
python
class BankAccount:
def __init__(self, balance):
self._balance = balance # защищённый атрибут
text
@property
def balance(self):
return self._balance
@balance.setter
def balance(self, value):
if value < 0:
raise ValueError("Баланс не может быть отрицательным")
self._balance = valueaccount = BankAccount(100)
account.balance = 50 # Корректно
account.balance = -10 # ValueError
text
**Практика:**
1. `_balance` — сигнализирует, что атрибут не предназначен для прямого доступа.
2. `@property` — контролирует доступ, добавляя валидацию.
3. `__balance` (двойное подчёркивание) — вызывает name mangling, но используется реже.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы