Join the AI Workshop and learn to build real-world apps with AI. A hands-on, practical program to level up your skills.
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__()responds to the+operator__sub__()responds to the-operator__mul__()responds to the*operator__truediv__()responds to the/operator__floordiv__()responds to the//operator__mod__()responds to the%operator__pow__()responds to the**operator__rshift__()responds to the>>operator__lshift__()responds to the<<operator__and__()responds to the&operator__or__()responds to the|operator__xor__()responds to the^operator
There are a few more methods to work with other operators, but you got the idea.
Lessons in this unit:
| 0: | Introduction |
| 1: | Functions |
| 2: | Lambda functions |
| 3: | Nested functions |
| 4: | Recursion |
| 5: | Closures |
| 6: | Objects |
| 7: | Classes |
| 8: | Polymorphism |
| 9: | ▶︎ Operator overloading |