Встречается на собеседованиях • сегодня

Как используешь инкапсуляцию на практике

В 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 = value

account = BankAccount(100)
account.balance = 50 # Корректно
account.balance = -10 # ValueError

text

**Практика:**
1. `_balance` — сигнализирует, что атрибут не предназначен для прямого доступа.
2. `@property` — контролирует доступ, добавляя валидацию.
3. `__balance` (двойное подчёркивание) — вызывает name mangling, но используется реже.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы