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
Two strings
str_1 = “10”
str_2 = “45”
print(str_1 + str_2)
>>>
1045
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
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())
dog = Dog()
cat = Cat()
animal_sound(dog) # Output: Woof!
animal_sound(cat) # Output: Meow!
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)
cow = Animal("grass")
circ = Circle(7)
enter_obj(cow)print(str(enter_obj(circ)))
>>>
eats grass
153.86
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 Understanding Polymorphism in Python - Medium on August 19, 2024.
Top comments (0)