DEV Community

Cover image for Understanding Polymorphism in Python
Alex Ricciardi
Alex Ricciardi

Posted on • Edited on • Originally published at Medium

Understanding Polymorphism in Python

The article provides an in-depth explanation of polymorphism in Python, highlighting its role in object-oriented programming.


Polymorphism is a Greek word that means many-shape or many-forms. Polymorphism is a fundamental concept in object-oriented programming (OOP). Python is polymorphic, meaning that in Python objects have the ability to take many forms. In simple words, polymorphism allows us to perform the same action in many different ways. (Vishal, 2021) Furthermore, in Python, everything is an object/a class. “Guido van Rossum has designed the language according to the principle “first-class everything”. He wrote: “One of my goals for Python was to make it so that all objects were “first class.” By this, I meant that I wanted all objects that could be named in the language (e.g., integers, strings, functions, classes, modules, methods, and so on) to have equal status.” (Klein, 2022, 1. Object Oriented Programming)

To understand Polymorphism, it is important to understand the ”Duck Typing” concept.”If it looks like a duck and quacks like a duck, then it probably is a duck.” In programming, this means that the suitability of an object is determined by the presence of certain methods and properties, rather than the actual type of the object.In Python, Duck Typing is the concept where the ‘suitability’ of an object is determined by the presence of certain methods or attributes, rather than the actual type of the object. In other words, Polymorphism in Python means that a single operator, function, or class method can have multiple forms/behaviors depending on the context.

1. Operator polymorphism
Or operator overloading allows an operator like + to perform different operations based on the operand types. (Jergenson, 2022)

For example:
Two integers

int_1 = 10
int_2 = 45
print(str(int_1 + int_2))
>>>
55
Enter fullscreen mode Exit fullscreen mode

Two strings

str_1 = 10
str_2 = 45
print(str_1 + str_2)
>>>
1045
Enter fullscreen mode Exit fullscreen mode

2. Function Polymorphism
Built-in functions like len() can act on multiple data types (e.g. strings, lists) and provide the length measured appropriately for each type.

For example:

str_1 = "polymorphic"
print(str(len(str_1)))
>>>
11

my_lst = [1, 2, 3, 4, 5]
print(str(len(my_lst))
>>>
5
Enter fullscreen mode Exit fullscreen mode

3. Class method polymorphism
Allows subclasses to override methods inherited from the parent class.

For example:

#  Parent class
class Animal:
    def make_sound(self):
        pass

# Child Class
class Dog(Animal):
    def make_sound(self):
        return "Woof!"

# Child Class
class Cat(Animal):
    def make_sound(self):
        return "Meow!"
    def animal_sound(animal):
        print(animal.make_sound())
Enter fullscreen mode Exit fullscreen mode
dog = Dog()
cat = Cat()
animal_sound(dog)  # Output: Woof!
animal_sound(cat)  # Output: Meow!
Enter fullscreen mode Exit fullscreen mode

4. Independent classes can also define methods with the same name that behave differently.

For example:

def enter_obj(obj):
    return obj.action() # Independent class
class Animal:
    def __init__(self, food):
        self.food = food
    # same name as the Circle method different functionality
    def action(self):
        print(f"eats {self.food}")# Independent class
class Circle:
        def __init__(self, radius):
            self.radius = radius
        # same name as the Animal method different functionality
        def action(self):
            return 3.14 * (self.radius ** 2)
Enter fullscreen mode Exit fullscreen mode
cow = Animal("grass")
circ = Circle(7)
enter_obj(cow)print(str(enter_obj(circ))) 
>>> 
eats grass 
153.86
Enter fullscreen mode Exit fullscreen mode

In conclusion, polymorphism is a powerful feature of Python. It allows objects to take on multiple forms and behave differently based on the context. Python’s duck typing enables polymorphism by focusing on the presence of certain methods or attributes rather than the actual type of the object.


References:

Jergenson, C. (2022, May 31)._ What is polymorphism in python?_. Educative. https://www.educative.io/blog/what-is-polymorphism-python

Klein, B. (2022, February 1). Object Oriented Programming / OPP. python-course. https://python-course.eu/oop/object-oriented-programming.php

Vishal. (2021, October 21). Polymorphism in Python. PYnative. https://pynative.com/python-polymorphism/


Originally published at Originally published at Alex.omegapy - Medium on August 19, 2024.

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay