Python Operator Overloading
Operator overloading is an advanced technique we can use to make classes comparable and to make them work with Python operators.
Let’s take a class Dog:
class Dog:
# the Dog class
def __init__(self, name, age):
self.name = name
self.age = age
Let’s create 2 Dog objects:
roger = Dog('Roger', 8)
syd = Dog('Syd', 7)
We can use operator overloading to add a way to compare those 2 objects, based on the age
property:
class Dog:
# the Dog class
def __init__(self, name, age):
self.name = name
self.age = age
def __gt__(self, other):
return True if self.age > other.age else False
Now if you try running print(roger > syd)
you will get the result True
.
In the same way we defined __gt__()
(which means greater than), we can define the following methods:
__eq__()
to check for equality__lt__()
to check if an object should be considered lower than another with the<
operator__le__()
for lower or equal (<=
)__ge__()
for greater or equal (>=
)__ne__()
for not equal (!=
)
Then you have methods to interoperate with arithmetic operations:
__add__()
respond to the+
operator__sub__()
respond to the–
operator__mul__()
respond to the*
operator__truediv__()
respond to the/
operator__floordiv__()
respond to the//
operator__mod__()
respond to the%
operator__pow__()
respond to the**
operator__rshift__()
respond to the>>
operator__lshift__()
respond to the<<
operator__and__()
respond to the&
operator__or__()
respond to the|
operator__xor__()
respond to the^
operator
There are a few more methods to work with other operators, but you got the idea.
→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter
→ JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025