WHAT IS POLYMORPHISM IN PYTHON


PYTHON POLYMORPHISM

Polymorphism is one of the OOP(object-oriented programming) concepts. Polymorphism in Python is the ability of an object to take many forms. The word “polymorphism” means “many forms”, and in programming, it refers to methods/functions/operators with the same name that can be executed on many objects or classes.

Function Polymorphism in Python

In Python Polymorphism, a method can process objects differently depending on the class type or data type.

To understand the concept in better way lets take an example of a Python built-in method that can be used on different objects is the len() function.

The Python built-in function len() calculates the length of an object depending upon its type. If an object is a string, it returns the count of characters, and If an object is a list, it returns the count of items in a list. and if an object is a dictionary, it returns the count of keys.

String

For strings len() returns the number of characters:

Python code

x = "Apple"

print(len(x))

Output

5

Tuple

For tuples len() returns the number of items in the tuple:

Python code

fruits = ("apple", "banana", "cherry")

print(len(fruits))

Output

3

Dictionary

For dictionaries len() returns the number of key/value pairs in the dictionary:

Python code

fruits = {
"red": "Apple",
"yellow": "Banana",
"Brown": "Kiwi"
}
print(len(fruits))

Output

3

Class Polymorphism in Python

Polymorphism in Python classes can be applied by having multiple classes with the same method name.

For example, say we have three classes: Bus, Boat, and Plane, and they all have a method called move():

Python code to show different classes with the same method:

class Bus:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Drive!")

class Boat:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Sail!")

class Plane:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Fly!")

bus1 = Bus("Tata", "Winger")       #Create a Bus class
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat class
plane1 = Plane("Boeing", "747")     #Create a Plane class

for x in (bus1, boat1, plane1):
  x.move()

Output

Drive!
Sail!
Fly!

Inheritance Class Polymorphism in Python

Inheritance along with polymorphism can be used in classes in Python.

In inheritance, child class inherits the attributes and methods of a parent class. The existing class is called a base class or parent class, and the new class is called a subclass or child class or derived class.

Using method overriding polymorphism allows us to define methods in the child class that have the same name as the methods in the parent class. This process of re-implementing the inherited method in the child class is known as Method Overriding.

Python code to create a class called Vehicle and make Bus, Boat, Plane child classes of Vehicle

class Vehicle:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Move!")

class Bus(Vehicle):
  pass

class Boat(Vehicle):
  def move(self):
    print("Sail!")

class Plane(Vehicle):
  def move(self):
    print("Fly!")

bus1 = Bus("Tata", "Winger") #Create a Bus object
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat object
plane1 = Plane("Boeing", "747") #Create a Plane object

for x in (bus1, boat1, plane1):
  print(x.brand)
  print(x.model)
  x.move()

output

Tata
Winger
Move!
Ibiza
Touring 20
Sail!
Boeing
747
Fly!

In the example above we can see that the Bus class(child class) is not having any content or it is empty, but it inherits the brand, model, and move() from the Vehicle(parent class).

The Boat and Plane (Child Classes) also inherit brand, model, and move() from Vehicle(Parent Class), but they both override the move() method.

Because of polymorphism, we are able to execute the same method for all classes.


Leave a Reply

Your email address will not be published. Required fields are marked *