Polymorphism Concept in Python with Best Working Examples

In this tutorial, we will go through polymorphism concepts in python with examples. Polymorphism is made up of two words: poly means many and morphism means several different forms. Like many other Object Oriented Programming Languages python also has the polymorphism concept. In this concept same object can perform in variety of ways based on the input we provide. It can be achieved by using method overloading and method overriding in python. Check more about polymorphism concept on Polymorphism in Python.

Polymorphism Concept in Python with Best Working Examples

Polymorphism Concept in Python with Best Working Examples

Also Read: Inheritance Concepts and Its 5 different types in Python with Best Working Examples

Polymorphism

Polymorphism is one of OOPS concept which allows the inherited class to define/redefine the functions/methods that has the same name in base class.

Method overloading and Method overriding are two types of polymorphism which proofs the concept. We will see both of them one by one below.

Method Overloading

Method Overloading in python is defined as functions having same name identified by types of argument and number of arguments passed.

Unlike any other programming languages (like C++), it’s implementation is different. Analyze below program. it will fail in python, however same will execute successfully in C++ (Make syntax changes if executing in C++)

def perimeter (a, b):
p = 2*(a + b)
print("Perimeter of rectangle is:" ,p)

def area (a, b, c):
p = 4*(a+b+c)
print("Perimeter of cuboid is:",p)

perimeter(3,4,5)
#perimeter(1,4)

Now, try below ways to achieve Method overloading in python.

Advertisements

Program Example 1

In this example we are defining a method add() which take data type and different number of data as an argument. Then we are using a for loop to go through each of the data and sum of those values. Finally add() method will display those values on the output. Here we are calling add() method 3 times and each time with different data type and different number of arguments proving the concept of method overloading.

def add(type, *arg):

if type =='int':
sum = 0

if type =='str':
sum = ''

if type =='float':
sum = 0.0

for x in arg:
sum = sum+ x
print(sum)

add('int', 2,3)
add('float', 1.0,2.6,3.4)
add('str', 'Hi' , '\tCyberithub')

Program Output

[root@localhost ~]# python example.py
5
7.0
Hi Cyberithub

 

Program Example 2

In this example also we are defining add() method which takes different types of data and different number of arguments but this time we are using a Class Operation and calling add() method by creating object of this class.

class Operation:
def add(self, sum=None, a=None, b=None):

if sum == 'str' and a!=None and b!=None:
print("String is:", (a+b))

elif sum == 'float' and a!=None and b!=None:
print("Float Multiplication is:", (a*b))

elif sum == 'int' and a!=None and b!=None:
print("Integer Addition is:", (a+b))

else:
print("Invalid Input")

ob= Operation()
ob.add('str', 'Hi', "\tThere")
ob.add('int', 2,6)
ob.add(3,4.5)
ob.add('float', 3.6, 4.4)

Program Output

[root@localhost ~]# python example.py 
('String is:', 'Hi\tThere') 
('Integer Addition is:', 8) 
Invalid Input 
('Float Multiplication is:', 15.840000000000002)

Method Overriding

In Method Overriding, name of the function/method as well as parameters passed to that function are same in parent and child classes. So basically method overriding means having two methods with the same name but performs different tasks.

It comes handier when implementing Inheritance in python. As you might be aware that in Inheritance, child class inherits the methods of Parent class but sometimes one cannot use the inherited methods as it is in child class. We need to modify the implementation of the method before use. This concept is Known as Method Overriding. It is used for reusability purpose, hence reduces the memory usage while processing.

Program Example 1

In this example we have a method fruit() in Class Fruits which is getting overridden in another Class called Mango by showing different statement on the output as you can see in below python program.

class Fruits:
def fruit(self):
print("Fruits are sweet in taste")

class Mango(Fruits):
def fruit(self):
print("Mangoes are sweet in taste")

ob =Mango()
ob.fruit()

Program Output

[root@localhost ~]# python example.py
Mangoes are sweet in taste

 

Program Example 2

Like above example, here we have a method car() defined in Class Car which subsequently getting overridden in another Class Nissan by showing different statement on the output. This proves the concept of Method Overriding.

class Car:
def car(self):
print("Car is used for Travel")

class Nissan(Car):
def car(self):
print("Nissan is a very fast car")

ob = Nissan()
ob.car()

Program Output

[root@localhost ~]# python example.py
Nissan is a very fast car

 

 

 

Popular Recommendations:-

How to List all the Installed Modules in Linux{2 Easy Methods}

Solved: ModuleNotFoundError No module named “numpy” in Python3

Python3: ModuleNotFoundError No module named “prettytable” in Linux

Solved: ModuleNotFoundError No module named “requests” in Python3

How to Check Stateful and Stateless Pods in Kubernetes Cluster

3 Easy Ways to Check/Find OpenSUSE Linux Version

Migrate CentOS 8 to CentOS Stream 8 in 6 Easy Steps

Advertisements

Leave a Reply