Object-Oriented Python:
Master OOP & Write More Pythonic Code

Object-Oriented Python: Master OOP & Write More Pythonic Code

5 Days • Live Course

Beyond class Foo: and def __init__. Learn the data model, design judgment, and decisions that separate working Python from Python that lasts.

Hosted By

Stephen Gruppetta
Stephen Gruppetta, PhD
Core Team member at Real Python and the author of Object-Oriented Programming in Python. He teaches Real Python's Intermediate Python Deep Dive cohort and brings the same hands-on approach to this course.

You can write Python code that works.

But there’s a corner of the language you keep walking around…

As your programs grow, the design questions get harder to avoid:

“Should this be a class or a function?”

“Where should this state live?”

“When does inheritance help, and when does it make the design worse?”

“What are __repr__, @property, @classmethod, and the sequence protocol actually for?”

You’re not a beginner, but classes and object-oriented design still feel like someone else’s vocabulary sometimes.

The thing is:

You can ship useful Python without thinking deeply about OOP. Many people do.

But once your programs have state, behavior, multiple representations, and changing requirements, object design starts to matter.

The codebases you want to write, the ones that hold up under change, that other devs can enjoy reading on a Monday morning, that scale past a handful of files, are the codebases where someone made deliberate decisions about objects.

About “what should know what.” About when a class earns its keep and when it doesn’t.

What Makes This Course Special

The Code Asks for the Class. Then You Write It.

Most OOP courses front-load the vocabulary. Encapsulation. Polymorphism. Inheritance. Then they hand you Animal, Dog, Cat and hope the abstractions stick.

This one runs the other direction:

We carefully structured the curriculum around a hands-on coding project that you’ll build and improve step-by-step, one live session at a time.

Every concept in this course shows up the moment the code can’t go further without it.

You write a script that almost works. You feel exactly where it strains…

Then you reach for the tool that fixes the strain in front of you, and the name for that tool (“a class,” “an @property,” “the sequence protocol”) arrives attached to a problem you just lived through.

Over the week, you’ll build a sushi-conveyor restaurant simulator while adding OOP features only when the design needs them:

  • turn fragile dictionaries into classes with useful __repr__ output
  • make custom objects behave like Python sequences
  • compare inheritance and composition in a concrete model
  • use @property to protect invariants without Java-style getters
  • add alternative constructors with @classmethod

Each OOP feature appears only when the code has reached a point where the next design decision matters.

You’ll start with simple data structures that almost work, then refactor them into objects that are easier to inspect, extend, and reason about.

By the end, you won’t just know what a class is. You’ll have practiced deciding when a class earns its keep.

Course Curriculum

Five 2-hour live Zoom sessions, Monday through Friday. Setup is minimal: Python 3.12+, your editor of choice, and Zoom. That’s it.

The first four days are hands-on instruction. You code along with Stephen and finish each day with a working piece of the simulator. Friday is two open hours of Q&A and recap.

A cohort forum runs alongside the live sessions, so you can ask questions between days, share what you’re building, and stay connected with Stephen and your peers throughout the week.

Can’t attend live? You’ll get the recording the next morning.

Here’s what happens each day:

Monday, June 8, 2026

Day 1: From Scribbles to Objects · Classes & Instances

By the end of today, you’ll have written your first real classes, and you’ll know when to reach for one instead of a dict.

What you’ll build: Your first object-oriented version of the simulator’s core data: classes with constructors, instance state, and useful __repr__ output.

What you’ll learn:

  • How to define a class and create instances with __init__ and self
  • Where state lives: class attributes vs. instance attributes
  • The mutable-class-attribute trap (a mistake you’ll hit in your own code within a week if you don’t see it now)
  • When to reach for a named class instead of a dictionary
Jun 8

Day 1: From Scribbles to Objects · Classes & Instances

Mon, Jun 8 @ 19:30 UTC (2 hours)

Tuesday, June 9, 2026

Day 2: The Day Python Clicks · Methods & Data Model

By the end of today, your custom classes will plug into Python’s built-in syntax (for-loops, indexing, sorting, printing) the way native types do.

What you’ll build: Classes that participate in Python’s data model: iterable, indexable, sortable, comparable, and concatenable.

What you’ll learn:

  • The three flavors of methods (instance, class, and static), and when each is the right tool
  • @classmethod as a clean way to expose alternate constructors (a pattern you’ll lean on again on Day 3)
  • Python’s data model and the dunder methods that hook into it: __repr__, __str__, __eq__, __lt__, __hash__, __len__, __iter__, __getitem__, __add__, __contains__
  • How to make your own classes behave like native Python sequences instead of inventing parallel APIs
Jun 9

Day 2: The Day Python Clicks · Methods & Data Model

Tue, Jun 9 @ 19:30 UTC (2 hours)

Wednesday, June 10, 2026

Day 3: A Real Restaurant Takes Shape · Object Creation, Inheritance & Composition

By the end of today, you’ll have made the most consequential decision in OO design (when to inherit, when to compose), and written both in the same growing codebase.

What you’ll build: A class hierarchy alongside a composed parent class, so inheritance and composition sit side by side in one project.

What you’ll learn:

  • Multiple alternate constructors via @classmethod, so each way an object gets created has a clean, named entry point
  • Inheritance (is-a) vs. composition (has-a), plus the cardinal over-inheritance mistake new OO developers make
  • Two shapes of composition: has-one (single attribute) and has-many (collection)
  • Abstract base classes (ABC) and @abstractmethod to formalize the contract subclasses must implement, so missing methods fail at construction rather than somewhere downstream
Jun 10

Day 3: A Real Restaurant Takes Shape · Object Creation, Inheritance & Composition

Wed, Jun 10 @ 19:30 UTC (2 hours)

Thursday, June 11, 2026

Day 4: A Restaurant That Lasts · Properties, Dataclasses & SOLID

By the end of today, the complete simulator runs in your terminal: guarded state, less boilerplate, swappable behavior, every concept from the week working together.

What you’ll build: The finished simulator, with validated attributes, dataclass-driven small types, and pluggable behavior the rest of the code doesn’t have to know about.

What you’ll learn:

  • @property for read-only attributes, validated setters, and computed values that can’t go stale, all without changing the obj.x syntax callers use
  • @dataclass (with field(default_factory=...) and frozen=True) to kill __init__/__repr__/__eq__ boilerplate on the many small classes every codebase accumulates
  • Two SOLID principles in depth: Open/Closed (extend behavior without rewriting existing classes) and Dependency Inversion (depend on a protocol, not a concrete type)
  • The remaining three SOLID principles named and pointed at

The session closes with a full run of the simulator: every class from the four days working together, the belt cycling, orders queueing, pricing flipping to happy hour at 4pm.

Jun 11

Day 4: A Restaurant That Lasts · Properties, Dataclasses & SOLID

Thu, Jun 11 @ 19:30 UTC (2 hours)

Friday, June 12, 2026

Day 5 — Q&A and Recap

Two open hours with Stephen to close the loop on anything that didn’t land.

What you’ll get:

  • A short visual recap of the week’s concepts
  • Open Q&A with Stephen: bring your code, your sticky problems, and the patterns you want to revisit
  • Time to discuss how the patterns from the simulator map onto your own projects
Jun 12

Day 5: Q&A and Recap

Fri, Jun 12 @ 19:30 UTC (2 hours)

Course Dates: June 8–12, 2026 (Mon–Fri)

Early Bird Price: $800$499

Enroll Today →Master OOP & Write More Pythonic Code

View Course Curriculum

Full refund within 14 days if you’re not satisfied. Dates don’t work? Join the waitlist for future sessions.

Real Python Satisfaction Guarantee

This course is backed by Real Python's guarantee. You can receive a full refund within 14 days after the course ends, provided you meet the completion criteria in our refund policy.

What You’ll Be Able to Do

  • Design classes that bundle data and behavior, instead of wrestling sprawling dicts and stranded helper functions
  • Make your own classes feel native to Python by hooking into the data model, so they're iterable, indexable, sortable, and printable
  • Recognize when to inherit and when to compose, and avoid the most common mistake new OO developers make

What You’ll Receive

  • 5 live 2-hour sessions (Mon–Fri) via Zoom
  • 2-hour open Q&A on Friday. Cohort forum with instructor and your peers throughout the week
  • Complete project codebase to keep and extend
  • Lifetime access to course materials and recordings
  • A digital copy of Object-Oriented Programming in Python
  • Bonus: a take-home python-oop SKILL.md for AI-assisted coding

Who This Course Is For

#1

Procedural Pythonistas who write functions and intuitively reach for lists, dicts, and comprehensions, but haven’t yet built anything serious with classes

#2

Inheritance-Only Class Writers who subclass BaseModel, models.Model, or unittest.TestCase happily, but have never designed a class from scratch

#3

Self-Taught Devs Hitting a Ceiling who can ship working scripts, but get lost the moment a codebase needs more than one file

Who Should Not Take This Course?

This course is not for absolute beginners. If you’re still finding your footing with Python basics like functions, dictionaries, and control flow, this will move too fast. Check out Real Python’s Python Basics Learning Path first.


Meet Your Instructor

Stephen Gruppetta
Stephen Gruppetta, PhD
Core Team member at Real Python and acclaimed Python educator who combines years of teaching expertise and storytelling techniques to make complex programming concepts clear, engaging, and unforgettable.

Stephen Gruppetta is a seasoned Python educator and author known for his engaging narrative approach to explaining complex concepts, drawing on his PhD in physics and years as a lecturer and technical writer.

With experience ranging from corporate training to creating accessible resources like The Python Coding Book, he’s dedicated to helping learners master Python with clarity and creativity.

Why Learn With Real Python?

Real Python started as a Kickstarter project in 2012. Today, over 1 million developers, data scientists, and ML engineers read it every month.

Our content goes through what very few Python resources match:

  • Expert technical review for accuracy
  • Teaching specialist evaluation for learning effectiveness
  • Professional editing for clarity

Our live courses bring that same review process to an interactive, instructor-led format. You get the questions, the live discussion, and a community that’s been learning Python with us since 2012.

What Learners Say About
Stephen’s Courses

“Ever since we’ve been taking the course, I’ve really changed a lot of the way that I’m programming… I started to see, oh, I could replace this with classes and it would be a lot more readable, a lot more efficient.”

“Honestly, just the first two weeks of this course was worth it for me.”

“It’s definitely given me more confidence to go deep dive into things I just took for granted… But after this course I feel much stronger in being able to understand the fundamentals of why things work in Python that it’s given me more confidence to go deeper.”

Matt Thacker, Sr. Solutions Engineer at Eptura

“I normally would just be doing functions, right? Just simple functions running the script. But the class stuff is pretty great. I really liked seeing the dunder call and how that’s used in your own classes—it just kind of clicked for me. Now when something goes wrong with one of our internal applications, I can go into the code and see better why something’s going wrong. This is gonna help a lot.”

“Even reading code now […] some of my coworkers, going through and looking at some of their code, I now can understand better on what they’re doing and what the classes are actually performing.”

Chris Kessler, Software Engineer at Sony Pictures

“I felt like I was a really well-studied Python beginner… But I couldn’t quite get out of there to the next level. And [Stephen's course] is helping because it’s all about that deeper understanding.”

“I can look at modules, I can look at other people’s code and I understand why they’re doing what they’re doing. And it’s not just taking things for granted anymore… I can go on and start exploring more complex things without immediately getting lost.”

Jerry Wilson, Technical Lead at AIM EMS Software


Why This Course Works

OOP is hard to learn from isolated examples because the design tradeoffs are missing.

A Dog class can show syntax, but it rarely shows why a class was the right abstraction in the first place.

In this course, each concept appears inside the same growing codebase. You see the before and after:

  • the dictionary version before the class
  • the hand-rolled method before the data model method
  • the conditional-heavy version before the subclass
  • the boilerplate version before @dataclass
  • the rigid constructor before @classmethod

OOP is not the answer to every design problem. But when your code has durable concepts, changing state, and behavior that belongs with that state, classes become one of Python’s most useful design tools.

This course helps you build that judgment.

Course Dates: June 8–12, 2026 (Mon–Fri)

Early Bird Price: $800$499

Enroll Today →Master OOP & Write More Pythonic Code

Full refund within 14 days if you’re not satisfied. Dates don’t work? Join the waitlist for future sessions.

Frequently Asked Questions

You should be comfortable with Python fundamentals including:

  • Writing and calling functions
  • Using basic data structures (lists, dictionaries)
  • Working with modules, packages, and virtual environments
  • Reading and running Python scripts from the command line

No prior OOP experience is required.

Setup is deliberately minimal: a computer with Python 3.12 or newer, your preferred IDE or editor (VS Code, PyCharm, Cursor, Vim, whatever you like), and Zoom for the live sessions. We’ll send the Zoom link and forum details a few days before Day 1. That’s the whole setup.

Yes! You’ll retain permanent access to:

  • The complete project repository
  • Session recordings
  • A digital copy of Object-Oriented Programming in Python
  • A bonus take-home python-oop SKILL.md for AI-assisted coding

This allows you to revisit the material and continue building on what you learned.

Sessions run from 19:30 to 21:30 UTC. That’s 2 hours per session, five days in a row.

  • Day 1 (Monday, June 8): 19:30–21:30 UTC
  • Day 2 (Tuesday, June 9): 19:30–21:30 UTC
  • Day 3 (Wednesday, June 10): 19:30–21:30 UTC
  • Day 4 (Thursday, June 11): 19:30–21:30 UTC
  • Day 5 — Q&A (Friday, June 12): 19:30–21:30 UTC

In your local time zone:

  • Day 1: Mon, Jun 8 @ 19:30 UTC to Mon, Jun 8 @ 21:30 UTC
  • Day 2: Tue, Jun 9 @ 19:30 UTC to Tue, Jun 9 @ 21:30 UTC
  • Day 3: Wed, Jun 10 @ 19:30 UTC to Wed, Jun 10 @ 21:30 UTC
  • Day 4: Thu, Jun 11 @ 19:30 UTC to Thu, Jun 11 @ 21:30 UTC
  • Day 5 (Q&A): Fri, Jun 12 @ 19:30 UTC to Fri, Jun 12 @ 21:30 UTC

Each session is recorded and posted shortly afterward, so you can catch up on your own schedule. We recommend attending live when you can, since the value of a live course is asking questions in real time. But if work collides with a session, the recording will be ready before the next day starts.

Every cohort gets a dedicated forum that runs from before Day 1 through the end of the week. Stephen is based in UTC+1 and monitors the forum throughout his working day, so you can ask questions, share what you’re building, and get unstuck without waiting for the next live session.

Yes! Select the number of seats you need on the booking page. Each team member will receive their own access to the course materials and recordings.

This is a one-time payment that covers all five days of the course plus lifetime access to all materials. There are no recurring charges or hidden fees.

This course is backed by Real Python’s satisfaction guarantee. You can receive a full refund within 14 days after the course ends, provided you meet the completion criteria in our refund policy.

Have another question? Email us at info@realpython.com

Course Dates: June 8–12, 2026 (Mon–Fri)

Early Bird Price: $800$499

Enroll Today →Master OOP & Write More Pythonic Code

Full refund within 14 days if you’re not satisfied. Dates don’t work? Join the waitlist for future sessions.