Python Polymorphism

← Back to Home

Understanding Python Polymorphism: A Simple Guide



What is Polymorphism?

Polymorphism stands for "many forms" or "more than one forms". In programming, it refers to the ability of different objects to respond to the same method or function call in their own unique ways.

Think of the word "Area". A triangle, a circle, and a rectangle may all have “Area,” but what they produce is completely different. That is polymorphism in real life.

In Python, polymorphism allows us to write flexible and reusable code. It is a core concept of OOP (Object-Oriented Programming).



Why we Use Polymorphism?

    Plymormorphism is used for the following benefits:

  • Code Reusability – Write code that works on multiple types.
  • Flexibility – Add new classes without changing existing code.
  • Simplicity – Handle objects in a general way, reducing the complexity.


Types of Polymorphism in Python

  1. Duck Typing
  2. Method Overriding
  3. Operator Overloading


1. 🦆 Duck Typing

"If it walks like a duck and quacks like a duck, so it is a duck."

Python does not check the type of an object. It checks the behaviour whether the object behaves the way it should.

class Dog:
    def speak(self):
        return "Woof!"

class Cat:
    def speak(self):
        return "Meow!"

def make_sound(animal):
    print(animal.speak())

make_sound(Dog())  # Woof!
make_sound(Cat())  # Meow!

Even though Dog and Cat are unrelated, they can both be used in make_sound because they implement the same method.



2. Method Overriding

Occurs when a child class defines a method that already exists in its parent class.

class Vehicle:
    def start(self):
        print("Starting vehicle...")

class Car(Vehicle):
    def start(self):
        print("Starting car engine...")

v = Vehicle()
v.start()  # Starting vehicle...

c = Car()
c.start()  # Starting car engine...

The start method here behaves differently depending on the object.



3. Operator Overloading

Python allows us to change the meaning (nature) of operators depending on the objects they are used with.

class Book:
    def __init__(self, pages):
        self.pages = pages

    def __add__(self, other):
        return Book(self.pages + other.pages)

book1 = Book(100)
book2 = Book(150)
total = book1 + book2
print(total.pages)  # 250

Here, the + operator adds the number of pages, not the objects themselves.



✅ Key Takeaways


  • Polymorphism lets you write general-purpose code that works on different types of objects.

  • It is essential for building scalable, maintainable, and DRY (Do not Repeat Yourself) code.

  • Python supports polymorphism through duck typing, inheritance, and special methods like __add__.


Final Thought

Polymorphism in Python is a practical tool that makes your code cleaner, smarter, and more adaptable. Whether you are a student writing your first OOP project or a working experienced professional building systems at scale, understanding polymorphism can level up your coding skills.