Challenge 1: Bank Account Class — Possible Solution ==================================================================== class BankAccount: def __init__(self, owner, balance=0): self.owner = owner self.balance = balance def deposit(self, amount): self.balance += amount account = BankAccount("Ada") account.deposit(100) account.deposit(50) print(account.balance) Output: 150 WHY THIS WORKS AS AN ANSWER ------------------------------ __init__(self, owner, balance=0) reuses two things from earlier chapters at once: the self.x = ... instance-attribute pattern from this chapter, and the default-parameter-value syntax from Course 1 Chapter 8 — balance=0 means BankAccount("Ada") alone is a valid call, with balance falling back to 0 automatically. deposit(self, amount) is an ordinary method, taking self (this chapter's explicit first-parameter convention) plus the amount to add. self.balance += amount reads and rewrites the SAME instance's balance attribute — since balance was set via self.balance in __init__, it's an instance attribute unique to this one account object, not shared across other BankAccount instances the way this chapter's warn-box-covered class attributes would be. Calling account.deposit(100) then account.deposit(50) runs that method twice against the same account object, so the two deposits accumulate: 0 + 100 + 50 = 150.