Encapsulation with Getters/Setters

Use properties to encapsulate attribute access with getter and setter logic.

PythonIntermediate
Python
# Program to demonstrate encapsulation using properties

class Account:
    def __init__(self, balance=0):
        self._balance = balance

    @property
    def balance(self):
        return self._balance

    @balance.setter
    def balance(self, amount):
        if amount < 0:
            raise ValueError("Balance cannot be negative")
        self._balance = amount


acc = Account(100)
print(acc.balance)
acc.balance = 150
print(acc.balance)

Output

100
150

The @property decorator allows attribute-style access while still enforcing validation in the setter.