Practical Object-Oriented Python

Classes in Python, and when not to write one. The sequence starts by arguing against reaching for a class, then builds: the object itself, making it readable, controlling access, and choosing between the four things Python gives you for holding data. It ends with the data model, which is the idea the rest of it rests on.