Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Object-Oriented Programming, Fifth Edition

This is the code repository for Python Object-Oriented Programming, Fifth Edition, published by Packt.

Learn how and when to apply OOP principles to build scalable and maintainable Python applications

Steven F. Lott, Dusty Phillips

      Free PDF       Graphic Bundle       Amazon      

About the book

Python Object-Oriented Programming, Fifth Edition

Learn 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.

Key Learnings

  • Write Python classes and implement object behaviors
  • Apply inheritance, polymorphism, and composition
  • Understand when to use OOP—and when not to
  • Use type hints and perform static and runtime checks
  • Explore common and advanced design patterns in Python
  • Write unit and integration tests with unittest and pytest
  • Implement concurrency with asyncio, futures, and threads
  • Refactor procedural code into well-designed OOP structures

Chapters

Unity Cookbook, Fifth Edition
  1. Object-Oriented Design
  2. Objects in Python
  3. When Objects Are Alike
  4. Expecting the Unexpected
  5. When to Use Object-Oriented Programming
  6. Abstract Base Classes and Operator Overloading
  7. Python Type Hints
  8. Python Data Structures
  9. The Intersection of Object-Oriented and Functional Programming
  10. The Iterator Pattern
  11. Common Design Patterns
  12. Advanced Design Patterns
  13. Testing Object-Oriented Programs
  14. Concurrency

Requirements for this book

  • All the examples were tested with Python 3.12.5. The pyright tool, version 1.1, was used to confirm that the type hints were consistent.
  • Some of the examples depend on an internet connection to gather data. These interactions with websites generally involve small downloads.
  • Some of the examples involve packages that are not part of Python’s built-in standard library. In the relevant chapters, we note the packages and provide the install instructions. All of these extra packages are in the Python Package Index, at https://pypi.org.

Errata & Troubleshooting Tips

Page 440 (Imitating objects using mocks):

The Status class defines an enumeration of three string values. We’ve provided symbolic names such as Status.CANCELLED so that we can have a finite, bounded domain of valid status values. The actual values stored in the database will be strings such as “CANCELLED” that — for now — happen to match the symbols we’ll be using in the application. In the future, the domain of values may expand or change, but we’d like to keep our application’s symbolic names separate from the strings that appear in the database. It’s common to use numeric codes with Enum, but they can be difficult to remember.

Get to know Authors

Steven F. Lott Steven Lott has been programming since computers were large, expensive, and rare. Working for decades in high tech has given him exposure to a lot of ideas and techniques, some bad, but most are helpful to others. Since the 1990s, Steven has been engaged with Python, crafting an array of indispensable tools and applications. His profound expertise has led him to contribute significantly to Packt Publishing, penning notable titles like "Mastering Object-Oriented," "The Modern Python Cookbook," and "Functional Python Programming." A self-proclaimed technomad, Steven's unconventional lifestyle sees him travelling back and forth across the US. He tries to live by the words “Don't come home until you have a story.”

Dusty Phillips Dusty Phillips is a Canadian software developer known for authoring several popular programming books.

Other Related Books

Testing the code base

This was tested using uv.

See https://docs.astral.sh/uv/ for how to install uv.

Each chapter is a separate mini-project. Most a scripts, a few are libraries.

Generally, it's possible to use terminal commands like the following to confirm the chapter's code works:

cd ch_1
uvx tox run

This will install a copy of tox and run it to confirm the various virtual environments work.

The project structure

Each chapter's code is in a separate directory, ch_01, ch_02, etc.

Within the chapter, there's some combination of src, and tests folders. There will also be a pyproject.toml file with parameters used to control tools like tox.

Download a free PDF

If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost.
Simply click on the link to claim your free PDF.

https://packt.link/free-ebook/9781836642596

About

Python Object-Oriented Programming, 5E, published by Packt

Resources

Stars

49 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages