Learning Polymorphism in Python: Key Concepts and Examples

Learning Polymorphism in Python: Key Concepts and Examples

Learning Polymorphism in Python: Key Concepts and Examples
Learning Polymorphism in Python: Key Concepts and Examples

Learning Polymorphism in Python: Key Concepts and Examples

Polymorphism is a programming concept that allows for objects of different classes to be used in a similar way. Polymorphism is a powerful tool in object-oriented programming (OOP) that can greatly simplify and improve code.

In this article, we will introduce the concept of polymorphism and discuss how it is implemented in Python. We will also provide real-world examples of polymorphism in action.

Introduction to polymorphism

Polymorphism is a Greek word that means “many forms.” In the context of programming, polymorphism refers to the ability for objects of different classes to be used in a similar way. This can be achieved through inheritance, function arguments, or other means.

There are two types of polymorphism:

  • Static polymorphism: This refers to the ability for a single function to have multiple definitions based on the number or type of arguments. This is also known as “method overloading.”
  • Dynamic polymorphism: This refers to the ability for a subclass to override or extend the methods of a superclass. This is also known as “method overriding.”

Polymorphism in Python

Polymorphism can be implemented in Python in several ways. Here are some common examples:

Method overloading

Method overloading is not directly supported in Python, but it can be achieved through the use of default arguments. For example:

class Calculator:
  def add(self, a, b=0):
    return a + b

calc = Calculator()
print(calc.add(5, 3))  # Output: 8
print(calc.add(5))     # Output: 5

In this example, the add method has two definitions: one with two arguments, and one with a single argument and a default value. This allows the add method to be called with either one or two arguments, achieving a similar effect to method overloading.

See also  Java app : A Simple and User-Friendly Calculator

Method overriding

Method overriding is the ability for a subclass to extend or modify the behavior of a method from the superclass. In Python, this is achieved through inheritance and the use of the super() function. For example:

class Animal:
  def speak(self):
    return "I am an animal"

class Dog(Animal):
  def speak(self):
    return "I am a dog"

a = Animal()
d = Dog()
print(a.speak())  # Output: "I am an animal"
print(d.speak())  # Output: "I am a dog"

In this example, the speak method of the Animal class is overridden by the speak method of the Dog class. This allows the speak method to have different behavior depending on the type of object it is called on.

Polymorphism with inheritance

Polymorphism can also be achieved through inheritance, even without method overriding. For example:

class Animal:
  def speak(self):
    return "I am an animal"

class Dog(Animal):
  pass

a = Animal()
d = Dog()
print(a.speak())  # Output: "I am an animal"
print(d.speak())  # Output: "I am an animal"

In this example, the Dog class does not have its own implementation of the speak method, so it inherits the method from the Animal class. This allows both Animal and Dog objects to be used in the same way, even though they are of different classes.

Polymorphism with function arguments

Polymorphism can also be achieved through the use of function arguments. For example:

class Animal:
  def speak(self):
    return "I am an animal"

class Dog:
  def speak(self):
    return "I am a dog"

def make_sound(obj):
  return obj.speak()

a = Animal()
d = Dog()
print(make_sound(a))  # Output: "I am an animal"
print(make_sound(d))  # Output: "I am a dog"

In this example, the make_sound function accepts an object as an argument and calls the speak method on it. This allows objects of different classes to be used in the same way, as long as they have a speak method.

See also  New : AKSI NYATA MODUL 2 2 PSE

Advanced polymorphism in Python

There are other ways to implement polymorphism in Python, such as through the use of the isinstance function and the “duck typing” principle.

Polymorphism with the “isinstance” function

The isinstance function is a built-in Python function that allows you to check if an object is an instance of a particular class. This can be useful for implementing polymorphism. For example:

class Animal:
  def speak(self):
    return "I am an animal"

class Dog:
  def speak(self):
    return "I am a dog"

def make_sound(obj):
  if isinstance(obj, Animal):
    return obj.speak()
  else:
    return "Object is not an Animal"

a = Animal()
d = Dog()
print(make_sound(a))  # Output: "I am an animal"
print(make_sound(d))  # Output: "Object is not an Animal"

In this example, the make_sound function uses the isinstance function to check if the object passed as an argument is an instance of the Animal class. If it is, the speak method is called. Otherwise, a different message is returned. This allows for different behavior depending on the type of object passed as an argument.

Polymorphism with the “duck typing” principle

The “duck typing” principle is a Python idiom that refers to the ability for an object to be used in a certain way as long as it has the required attributes or methods, regardless of its class. This can be useful for implementing polymorphism. For example:

class Animal:
  def speak(self):
    return "I am an animal"

class Dog:
  def speak(self):
    return "I am a dog"

class Cat:
  def speak(self):
    return "I am a cat"

def make_sound(obj):
  return obj.speak()

a = Animal()
d = Dog()
c = Cat()
print(make_sound(a))  # Output: "I am an animal"
print(make_sound(d))  # Output: "I am a dog"

print(make_sound(c)) # Output: “I am a cat”

See also  Find the Perfect Stock Image for Your Project on Adobe Stock

In this example, the make_sound function calls the speak method on the object passed as an argument, regardless of its class. This allows objects of different classes to be used in the same way as long as they have a speak method.

Real-world examples of polymorphism in Python

Polymorphism is a useful concept that can be applied in many real-world scenarios. Here are some examples of polymorphism in action:

Polymorphism in GUI programming

In GUI programming, polymorphism is often used to create reusable components that can be customized for different purposes. For example, a button class might have a click method that can be overridden to perform different actions depending on the context.

Polymorphism in machine learning

In machine learning, polymorphism is often used to create flexible models that can be used with different types of data. For example, a classifier might have a predict method that can be called on different types of inputs, such as text, images, or audio.

Conclusion

Polymorphism is a powerful concept in object-oriented programming that allows for objects of different classes to be used in a similar way. Python provides several ways to implement polymorphism, including method overloading, method overriding, inheritance, and function arguments. Polymorphism is a useful tool that can greatly simplify and improve code in many real-world scenarios.

Print Friendly, PDF & Email

Author

Leave a Reply