Published Feb 21 2021
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 ^
operatorThere are a few more methods to work with other operators, but you got the idea.
I wrote an entire book on this topic 👇
© 2023 Flavio Copes
using
Notion to Site.
Follow on Twitter
Solopreneur? Wannabe? Adventure awaits