Isaac Rodriguez at RealPython: Inheritance and Composition: a Python OOP Guide.
The very first job I had after college1 was at American Management Systems, where I was hired as a business systems analyst and very rapidly molded into a programmer. In my first few days of training, I was introduced to concepts of object oriented programming, and it made a very strong impression on the way I solved problems. (Much to the chagrin of some of my fellow PowerBuilder developers.)
In that first six years as a programmer and architect, I learned a lot about object oriented concepts and tradeoffs: overriding, then invoking, behavior from a parent; the promise and madness of multiple inheritance; performance impacts of deep inheritance hierarchies. And I learned that, like every other tool, inheritance could be overused.2
I haven’t been a programmer for a long time, but I’m learning some Python now at work, and I was looking for some guidance on OO concepts in the Python world. Rodriguez’s article is thorough and well written, even if I’m not ready to adopt all the practices yet. Mostly, after wading through StackOverflow incantations and poorly written library how-tos, I’m just relieved to read intelligent discussions on how to program. I’ll be returning to this well.