Start here. This is the direct spoken answer to practice first.
Overview
Python classes hold shared attributes and functions, while instances usually hold per-object state; lookup connects the two at runtime.
A class attribute belongs to the class and is shared through its instances unless an instance shadows that name. An instance attribute, commonly assigned through self in __init__, belongs to that instance. Putting a mutable list on the class can therefore make every instance see one list. A function stored on a class becomes a bound method when accessed through an instance: Python supplies that instance as the first argument, conventionally named self.