oursolutionarchitectoursolutionarchitect
  • Python Questions and Answers
  • Python - Programming Examples
  • Python - Quick Guide
  • Python - Useful Resources
  • Python - Discussion
    • Selected Reading
    • Q&A

    Python - Polymorphism


    The term "polymorphism" refers to a function or method taking different form in different contexts. Since Python is a dynamically typed language, Polymorphism in Python is very easily implemented.

    If a method in a parent class is overridden with different business logic in its different child classes, the base class method is a polymorphic method.

    Example

    As an example of polymorphism given below, we have shape which is an abstract class. It is used as parent by two classes circle and rectangle. Both classes overrideparent's draw() method in different ways.

    from abc import ABC, abstractmethod
    class shape(ABC):
       @abstractmethod
       def draw(self):
          "Abstract method"
          return
    
    class circle(shape):
       def draw(self):
          super().draw()
          print ("Draw a circle")
          return
    
    class rectangle(shape):
       def draw(self):
          super().draw()
          print ("Draw a rectangle")
          return
    
    shapes = [circle(), rectangle()]
    for shp in shapes:
       shp.draw()
    

    Output

    When you execute this code, it will produce the following output −

    Draw a circle
    Draw a rectangle
    

    The variable shp first refers to circle object and calls draw() method from circle class. In next iteration, it refers to rectangle object and calls draw() method from rectangle class. Hence draw() method in shape class is polymorphic.