Yashotantra Academy logo
← Python theorytheory 0/50 · 0%
level 1
Curious · 0 XP
streak
0d
perfect
0
badges
0

100 XP to Apprentice

OOP · hard

41. Operator overloading and dunder methods

Customizing how objects respond to +, ==, len(), etc.

1 min read3 questionsup to 50 XPtopic 41/50

Read in another language

AI translates the explanation and quiz text while preserving code and answer scoring.

Dunder ("double underscore") methods let custom classes participate in built-in syntax like arithmetic, comparisons, iteration, and container protocols.

python
class Money:
    def __init__(self, cents):
        self.cents = cents
    def __add__(self, other):
        return Money(self.cents + other.cents)
    def __eq__(self, other):
        return self.cents == other.cents
    def __repr__(self):
        return f"Money({self.cents})"
    def __lt__(self, other):
        return self.cents < other.cents

Money(100) + Money(50)   # Money(150)
Money(100) == Money(100)  # True

Implementing `__lt__` (and optionally `functools.total_ordering` to fill in the rest) makes instances sortable with `sorted()`. `__len__` and `__getitem__` let a custom object behave like a sequence.

How to study this topic

  1. 1. Read the explanation once end to end, skipping the code.
  2. 2. Re-read the code snippets and say out loud what each line does.
  3. 3. Answer the quiz without scrolling back — that is the real check.
  4. 4. Read every explanation, even for the answers you got right.

Scoring

  • · Up to 30 XP from quiz accuracy.
  • · +15 XP for a perfect first attempt.
  • · +5 XP while a 3-day streak is running.
  • · 75% or higher marks the topic complete.

Check your understanding

  1. 1. Which dunder method is invoked by `a + b`?

  2. 2. What does implementing `__lt__` enable?

  3. 3. What does `functools.total_ordering` do?

Badges

First light
Pass your first topic
Sharp shooter
3 perfect first-try quizzes
On a roll
Study 3 days in a row
Week warrior
Study 7 days in a row
Grinder
Earn 500 XP
Deep diver
Earn 1500 XP