“I’ve worked with James Kendall on more projects than I care to count. On point, on schedule, on budget, every time. I can’t recommend James more highly.”Christopher Conlan – Habooble Communications

“James is always helpful. It doesn’t matter if I have what he had asked for, he was patient and worked through it with me. He’s a solid resource, willing to do whatever it takes to do what’s right.”Brent Rangen – Co-Founder at Poor Logistics

Python’s object-oriented features use inheritance for code reuse and extensibility in the form of classes. You don’t have to use classes in your Python projects, however once you understand how powerful they are chances are you’ll find places where they are appropriate.

Python has been object-oriented since it was created, however it wasn’t until Python 2.2 that, in Guido’s own words, it was done right. “This change was, by far, the most ambitious rewrite of a major Python subsystem to date” he wrote in The History of Python

Python OOP Resources

Real Python has a great overview of OOP in Python. They discuss not just what classes are but why you might want to use them. This is a good place to start if OOP is new to you.

Anna-Lena Popkes created an interesting series of blog posts where she created a “little Magical Universe with classes and methods related to the Tales of Castle Kilmere”. I found this a very creative way of explaining OOP in Python. She was also a guest on Talk Python to Me where she discussed the her magical kingdom and object-oriented Python.

There is a great interactive course at DataCamp that introduces the internals of classes and the utilization of objects, as well as important object-oriented programming fundamentals such as inheritance, polymorphism, and composition.