Today we developed this: class Account(object): def __init__(self, name, initial): self.name = name self.balance = initial def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def report(self): print self.balance This is how it works: >>> >>> a = Account("Leo", 23) >>> a <__main__.Account object at 0x02C267B0> >>> a.name 'Leo' >>> a.balance 23 >>> a.deposit(34) >>> a.report() 57 >>> a.withdraw(12) >>> a <__main__.Account object at 0x02C267B0> >>> a.name 'Leo' >>> a.balance 45 >>> a.report() 45 >>> b = Account("Mike Lucero", 12) >>> a <__main__.Account object at 0x02C267B0> >>> b <__main__.Account object at 0x02C267F0> >>> a.report() 45 >>> b.report() 12 >>> b.deposit(100) >>> a.report() 45 >>> b.report() 112 >>> a.name 'Leo' >>> The definition above is of a class called Account. Account objects have: a) one piece of data (instance variable) called balance b) three identical behaviors with respect to their data -- deposit -- withdraw -- report c) they also have a constructor. Notice that if a = Account("Bryant", 30) then calling a.deposit(12) essentially means that amount binds to 12 and self is pointing to the object (a) whose function deposit has been invoked.