I don't know if it's best, but I took on OOP in little bites:<p>- ECMAScript 5<p>Mixins, scopes, instance variables, and instantiation.<p>As a bonus, but not OOP, callbacks. It's a straight-forward language that's available abundance.<p>- Python<p>For it's class inheritance being easy to navigate. Instance variables, instantiation, method resolution order (MRO), mixins.<p>- C++<p>This is the hardest language I can think of. It does <i>everything</i> OOP, and more, including allowing for a lot of stuff that's not legible.<p>Despite that, it's a solid language.<p>Something that goes great with constraining the many features of C++ are <a href="https://google.github.io/styleguide/cppguide.html" rel="nofollow">https://google.github.io/styleguide/cppguide.html</a> or <a href="https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines" rel="nofollow">https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines</a>.<p>I think ES5 and Python are used very often and in terms of bang for the buck, give they cover a lot of the bread and butter OOP concepts.