GoodReads Summary: The book begins with the very foundations of OOP and then uses practical examples to show how to correctly implement Object Oriented Programming in Python. Many examples are taken from real-world projects. The book focuses on high-level design as well as the gritty details of the Python syntax. The provided exercises inspire the reader to think about his or her own code, rather than providing solved problems. If you're new to Object Oriented Programming techniques, or if you have basic Python skills and wish to learn in depth how and when to correctly apply Object Oriented Programming in Python, this is the book for you. If you are an object-oriented programmer for other languages, you too will find this book a useful introduction to Python, as it uses terminology you are already familiar with. Python 2 programmers seeking a leg up in the new world of Python 3 will also find the book beneficial, and you need not necessarily know Python 2.

★★★★★

After a bunch of titles from Packt, I expected something that would be half OO, half Python 3. But I got a very happy surprise reading the book because it does really go intro OO, explaining from analysis to design to code and then slowly dwelving into Python around those topics.

Not only that, but instead of simply assuming his position is right, the author explores other possibilites and than moves back when something doesn't work -- kinda like Robert C. Martin does in Clean Code: A Handbook of Agile Software Craftsmanship.

In the end, even after I work with Python for 5+ years, I still learnt a few more things about using Python for OO development (and really got in agreement with the author when OO isn't necessary!)