This recent book by Goldwasser and Letscher offers an excellent introduction to object-oriented programming. Whether you are just learning OOP, need a refresher or want a full course on it, this book will serve you well. The authors use Python to illustrate core concepts in programming and best practices for software development. While it is obviously intended for university courses, non-academic learners can benefit from it as answers for all of the exercices in the book are available in an appendix. For more on Object-Oriented Programming in Python, see my review under "Suggested Resources".