Account holding a balance in a single-underscore attribute _balance (the Python privacy convention). Provide deposit(amount) and withdraw(amount) that reject non-positive amounts and overdrafts by raising ValueError, and a read-only balance property. No direct writes from outside.a = Account(100); a.deposit(50); a.balance
150
State changes only through methods.
a.withdraw(999)
ValueError
Overdraft rejected.
@property over a getter method.
Validation raises before mutating.