This hands-on guide empowers Python developers to write clean, production-ready code using real-world OOP, design patterns, and concurrency tools. Fully updated for Python 3.13 with new type hinting and modern software engineering practices.
Key FeaturesMaster OOP fundamentals with hands-on examples and expert insightsLearn design patterns and type hinting with real-world Python 3.13 codeDevelop scalable programs using testing and concurrency best practicesPurchase of the print or Kindle book includes a free PDF eBookBook DescriptionLearn to write effective, maintainable, and scalable Python applications by mastering object-oriented programming with this updated fifth edition. Whether you’re transitioning from scripting to structured development or refining your OOP skills, this book offers a clear, practical path forward.
You’ll explore Python’s approach to OOP, from class creation and inheritance to polymorphism and abstraction, while discovering how to make smarter decisions about when and how to use these tools. You’ll apply what you learn through hands-on examples and exercises.
Updated for Python 3.13, this edition simplifies complex topics such as abstract base classes, testing with unittest and pytest, and async programming with asyncio. It introduces a new chapter on Python’s type hinting ecosystem—crucial for modern Python development.
Written by long-time Python experts Steven Lott and Dusty Phillips, this edition emphasizes clarity, testability, and professional software engineering practices. It helps you move beyond scripting to building well-structured, production-ready Python systems.
By the end of this book, you’ll be confident in applying OOP principles, design patterns, type hints, and concurrency tools to create robust and maintainable Python applications.
What you will learnWrite Python classes and implement object behaviorsApply inheritance, polymorphism, and compositionUnderstand when to use OOP—and when not toUse type hints and perform static and runtime checksExplore common and advanced design patterns in PythonWrite unit and integration tests with unittest and pytestImplement concurrency with asyncio, futures, and threadsRefactor procedural code into well-designed OOP structuresWho this book is forPython developers who want to deepen their understanding of object-oriented programming to write maintainable, scalable, and professional-grade code. Ideal for developers transitioning from scripting to software engineering or those coming from other OOP languages looking to master Python’s idiomatic approach. Basic Python knowledge is required.
Table of ContentsObject-Oriented DesignObjects in PythonWhen Objects Are AlikeExpecting the UnexpectedWhen to Use Object-Oriented ProgrammingAbstract Base Classes and Operator OverloadingPython Type HintsPython Data StructuresThe Intersection of Object-Oriented and Functional ProgrammingThe Iterator PatternCommon Design PatternsAdvanced Design PatternsTesting Object-Oriented ProgramsConcurrency
I have recently read Python Object-Oriented Programming (5th Edition) by Steven F. Lott and Dusty Phillips, and I can definitely recommend reading it, if you want to obtain or broaden your knowledge of OOP.
The book is very comprehensive. It aims to teach object-oriented programming in Python not just as a language feature, but as a way of structuring software. The first chapter, which introduces OOP concepts, felt longer than necessary and a bit heavy as an entry point. However, after that initial section, the book becomes much more focused and enjoyable to read.
One of its strengths is how thoroughly it explains classes and object-oriented design. The authors rely on detailed examples and UML diagrams to illustrate relationships between objects and responsibilities within a system. This makes the discussion more concrete and helps connect abstract principles and actual code.
The book also goes beyond classes themselves. It spends time on broader software engineering topics that are essential in real-world Python projects — for example, exceptions: what they are, why they exist, and how to handle them properly. This emphasis on why certain constructs are used, and when they make sense, is consistent throughout the book and is one of its most valuable aspects.
Although the book is positioned as beginner-friendly, it covers a wide range of more advanced topics: iterators and generators, design patterns, testing, type hints, and data structures. Because of this, it does not feel limited to a purely introductory audience. Instead, it can grow with the reader as their understanding deepens.
Given its scope, I would not necessarily recommend reading the book strictly from cover to cover in one pass. A more effective approach is to read the first several chapters to build a solid foundation in OOP, and then return to specific sections later when encountering new concepts in practice and wanting a deeper explanation.
Overall, this is a solid and thoughtful book that teaches not just Python syntax, but object-oriented thinking in a Python context. It works well both as an introduction to OOP and as a long-term reference for developers who want to write more maintainable and scalable Python code.
This book provides thorough explanations on how OOP works from python perspective. This is my second time to read the new edition of this book and i am impressed by how the authors really shape my understanding of OOP with python. Every chapter is laid out with hands-on instances that makes reading enjoyable.