Everything You Don't Need to Know About Classes

Hello! This page includes resources related to my PyBeach 2026 talk, Everything You Don't Need to Know About Classes.

View the Slides

Resources on methods and dunder methods

“Callables: Python's "functions" are sometimes classes” by Trey Hunner

An article on the class or function game that this talk opens with.

“Python's self” by Trey Hunner

A short screencast on what self is and why every method accepts it.

“Every dunder method in Python” by Trey Hunner

An explanation of all of Python's 100+ dunder methods, with cheat sheet tables. That wall of dunder method names in my slides came from this article.

Resources on attribute lookups and descriptors

“__dict__: where Python stores attributes” by Trey Hunner

A short screencast on the __dict__ dictionary that most objects store their attributes in.

“__slots__ for optimizing classes” by Trey Hunner

A screencast on classes whose instances don't have a __dict__ dictionary at all.

“Unravelling attribute access in Python” by Brett Cannon

Brett walks through what Python really does during an attribute lookup, one step at a time.

Attribute access implemented in Python

Brett's code from that article, which is the second attribute lookup flow chart from my slides written as Python code.

“Descriptor Guide” by Raymond Hettinger

The descriptor how-to from the official Python documentation, which includes pure Python versions of property, methods, classmethod, and staticmethod.

“Python's Class Development Toolkit” by Raymond Hettinger

A talk from PyCon US 2013 that builds up one class with the tools Python gives us: class attributes, property, classmethod, staticmethod, __slots__, and more.

Resources on metaclasses and super()

“Goose typing” by Trey Hunner

An article on using isinstance checks while duck typing, which abstract base classes use a metaclass to allow.

Python's data model documentation

The official Python documentation on dunder methods, descriptors, metaclasses, __mro_entries__, and nearly everything else in this talk.

super() re-implemented in Python... for fun!

My attempt at re-implementing super in Python. You don't need to read this!

“Python's super() considered super!” by Raymond Hettinger

The classic article on what super() is for and how to use it well with multiple inheritance.

“Super considered super!” by Raymond Hettinger

Raymond's talk from PyCon US 2015 on the same topic, with the method resolution order and multiple inheritance explained.

More of my talks

“Variables and objects in Python” at PyCascades 2026

I explain the nature of Python's variables and data structures. This talk assumes that you know that variables in Python are pointers to objects, so watch this one if that's news to you.

“pathlib.Path: why and how to use it” at PyCon US 2026

I make the case for using pathlib instead of string-based paths and show how to use it.

“Python Oddities Explained” at PyCon US 2022

I discuss some of my favorite Python oddities, as a way of deepening our skills by breaking things.

My projects ✏️

Weekly Python tips 💌

I share a Python tip via email every week. 🐍 💡