46
Encapsulation
Encapsulation: Protecting State, Preventing Accidental Mutations
What might confuse you right now
"Modifying attributes directly is faster. Why bother with encapsulation?"
Faster short-term, riskier long-term. Encapsulation forces all state changes through unified validation rules.
One-line definition
Encapsulation bundles data and the methods that operate on it, while restricting external modifications.
Real-life analogy
You can't edit your bank balance directly in the database. You go through deposit/withdraw APIs.
Minimal runnable example
class Wallet:
def __init__(self, owner, balance=0):
self.owner = owner
self.__balance = balance
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def get_balance(self):
return self.__balance
Quick quiz (5 min)
- Add a
withdrawmethod with balance validation. - Add
transfer_to. - Return a friendly error message on failure.
Quiz answer guidelines & grading criteria
- Answer direction: working code that covers core conditions and edge inputs from the prompt.
- Criterion 1 (Correctness): Main flow produces correct results, key branches execute.
- Criterion 2 (Readability): Clear variable names, no excessive nesting.
- Criterion 3 (Robustness): Basic protection against null values, type errors, or unexpected input.
Transfer task (homework)
Refactor "order status updates" into encapsulated methods (no direct external modification of the status field).
Acceptance criteria
You can independently:
- Protect internal state through methods
- Add business validation to state updates
- Explain how encapsulation reduces bugs
Common errors & debugging steps (beginner edition)
- Can't understand the error: read the last line for the error type (e.g.,
TypeError,NameError), then trace back to the relevant code line. - Not sure about a variable's value: temporarily add
print(variable, type(variable))at key points to verify data matches expectations. - Code changes aren't taking effect: confirm the file is saved, you're running the right file, and your terminal environment (venv) is correct.
Common misconceptions
- Misconception: Every field must be private.
- Reality: Design encapsulation levels based on risk and boundaries.