Polimorfismo en Python con EJEMPLOS

¿Qué es el polimorfismo?

El polimorfismo se puede definir como una condición que se presenta de muchas formas diferentes. Es un concepto en la programación de Python en el que un objeto definido en Python se puede utilizar de diferentes maneras. Permite al programador definir múltiples métodos en una clase derivada y tiene el mismo nombre que el presente en la clase principal. Estos escenarios admiten la sobrecarga de métodos en Python.

Polimorfismo en operadores

Un operador en Python ayuda a realizar tareas matemáticas y de programación de otro tipo. Por ejemplo, el operador '+' ayuda a realizar la suma entre dos tipos de enteros en Python y, de la misma manera, el mismo operador ayuda a concatenar cadenas en la programación de Python.

Tomemos un ejemplo de + (más) operador en Python para mostrar una aplicación de polimorfismo en Python como se muestra a continuación:

Código Python:

p = 55
q = 77
r = 9.5
g1 = "Guru"
g2 = "99!"
print("the sum of two numbers",p + q)
print("the data type of result is",type(p + q))
print("The sum of two numbers",q + r)
print("the data type of result is", type (q + r))
print("The concatenated string is", g1 + g2)
print("The data type of two strings",type(g1 + g2))

Salida:

the sum of two numbers 132
the data type of result is <class 'int'>

The sum of the two numbers 86.5
the data type of result is <class 'float'>

The concatenated string is Guru99!
The data type of two strings <class 'str'>

El ejemplo anterior también puede considerarse como un ejemplo de sobrecarga del operador.

Polimorfismo en métodos definidos por el usuario.

Un método definido por el usuario en el lenguaje de programación Python son métodos que crea el usuario y se declara utilizando la palabra clave def con el nombre de la función.

El polimorfismo en el lenguaje de programación Python se logra mediante la sobrecarga y anulación de métodos. Python define métodos con la palabra clave def y con el mismo nombre tanto en la clase secundaria como en la primaria.

Tomemos el siguientewing ejemplo como se muestra a continuación: –

Código Python:

from math
import pi
class square:
    def __init__(self, length):
    self.l = length
def perimeter(self):
    return 4 * (self.l)
def area(self):
    return self.l * self.l
class Circle:
    def __init__(self, radius):
    self.r = radius
def perimeter(self):
    return 2 * pi * self.r
def area(self):
    return pi * self.r * * 2
# Initialize the classes
sqr = square(10)
c1 = Circle(4)
print("Perimeter computed for square: ", sqr.perimeter())
print("Area computed for square: ", sqr.area())
print("Perimeter computed for Circle: ", c1.perimeter())
print("Area computed for Circle: ", c1.area())

Salida:

Perimeter computed for square:  40
Area computed for square:  100
Perimeter computed for Circle:  25.132741228718345
Area computed for Circle:  50.26548245743669

En el código anterior, hay dos métodos definidos por el usuario, perímetro y área, definidos en clases de círculo y cuadrado.

Como se muestra arriba, tanto la clase circular como la clase cuadrada invocan el mismo nombre de método que muestra la característica de polimorfismo para entregar el resultado requerido.

Polimorfismo en funciones

Las funciones integradas en Python están diseñadas y son compatibles para ejecutar varios tipos de datos. En pitón, Len() es una de las funciones clave integradas.

Funciona con varios tipos de datos: lista, tupla, cadena y diccionario. La función Len () devuelve información definitiva alineada con estos muchos tipos de datos.

El following La figura muestra cómo se puede aplicar el polimorfismo en Python en relación con las funciones integradas: –

Polimorfismo en funciones

Following El programa ayuda a ilustrar la aplicación del polimorfismo en Python: –

Código Python:

print ("The length of string Guru99 is ",len("Guru99"))
print("The length of list is ",len(["Guru99","Example","Reader"]))
print("The length of dictionary is ",len({"Website name":"Guru99","Type":"Education"}))

Salida:

The length of string Guru99 is 6
The length of the list is 3
The length of the dictionary is 2

Polimorfismo en funciones

En el ejemplo anterior, la función Len () de Python realiza polimorfismo para tipos de datos de cadena, lista y diccionario, respectivamente.

Polimorfismo y herencia

La herencia en Python se puede definir como el concepto de programación en el que una clase secundaria definida hereda propiedades de otra clase base presente en Python.

Hay dos conceptos clave de Python denominados anulación de métodos y sobrecarga de métodos.

  • En la sobrecarga de métodos, Python proporciona la función de crear métodos que tienen el mismo nombre para realizar o ejecutar diferentes funcionalidades en un fragmento de código determinado. Permite sobrecargar métodos y los utiliza para realizar diferentes tareas en términos más simples.
  • En la anulación de métodos, Python anula el valor que shares un nombre similar en las clases de padres e hijos.

Tomemos el siguientewing ejemplo de polimorfismo y herencia como se muestra a continuación: –

Código Python:

class baseclass:
    def __init__(self, name):
    self.name = name
def area1(self):
    pass
def __str__(self):
    return self.name
class rectangle(baseclass):
    def __init__(self, length, breadth):
    super().__init__("rectangle")
self.length = length
self.breadth = breadth
def area1(self):
    return self.length * self.breadth
class triangle(baseclass):
    def __init__(self, height, base):
    super().__init__("triangle")
self.height = height
self.base = base
def area1(self):
    return (self.base * self.height) / 2
a = rectangle(90, 80)
b = triangle(77, 64)
print("The shape is: ", b)
print("The area of shape is", b.area1())
print("The shape is:", a)
print("The area of shape is", a.area1())

Salida:

The shape is: a triangle
The area of a shape is 2464.0

The shape is: a rectangle
The area of a shape is 7200

En el código anterior, los métodos tienen el mismo nombre definido como método init y método area1. Los objetos de clase cuadrado y rectángulo se utilizan luego para invocar los dos métodos para realizar diferentes tareas y proporcionar la salida del área del cuadrado y el rectángulo.

Polimorfismo con los métodos de clase

La programación Python permite a los programadores lograr polimorfismo y sobrecarga de métodos con métodos de clase. Las diferentes clases en Python pueden tener métodos declarados con el mismo nombre en todo el código Python.

En Python se pueden definir dos clases diferentes. Una sería la clase secundaria y deriva atributos de otra clase definida denominada clase principal.

El following El ejemplo ilustra el concepto de polimorfismo con métodos de clase: –

Código Python:

class amazon:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print("This is product and am class is invoked. The name is {self.name}. This costs {self.price} rupees.")
class flipkart:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print(f "This is product and fli class is invoked. The name is {self.name}. This costs {self.price} rupees.")
FLP = flipkart("Iphone", 2.5)
AMZ = amazon("Iphone", 4)
for product1 in (FLP, AMZ):
    product1.info()

Salida:

This is a product, and fli class is invoked. The name is iPhone, and this costs 2.5 rupees.
This is a product, and am class is invoked. The name is iPhone, and this costs 4 rupees.

En el código anterior, dos clases diferentes denominadas flipkart y amazon Utilice los mismos nombres de método info e init para proporcionar las respectivas cotizaciones de precios del producto e ilustrar aún más el concepto de polimorfismo en Python.

Diferencia entre sobrecarga de métodos y polimorfismo en tiempo de compilación

En el polimorfismo en tiempo de compilación, el compilador del programa Python resuelve la llamada. El polimorfismo en tiempo de compilación se logra mediante la sobrecarga de métodos.

El compilador de Python no resuelve las llamadas durante el tiempo de ejecución por polimorfismo. También se clasifica como anulación de métodos, en la que los mismos métodos llevan firmas o propiedades similares, pero forman parte de clases diferentes.

Resumen

  • El polimorfismo se puede definir como una condición que se presenta de muchas formas diferentes.
  • Un operador en Python ayuda a realizar tareas matemáticas y de programación de otro tipo.
  • Un método definido por el usuario en el lenguaje de programación Python son métodos que crea el usuario y se declara utilizando la palabra clave def con el nombre de la función.
  • El polimorfismo en Python ofrece varias cualidades deseables, como que promueve la reutilización de códigos escritos para diferentes clases y métodos.
  • Una clase secundaria es una clase derivada y obtiene sus atributos de la clase principal.
  • El polimorfismo también se logra mediante la anulación de métodos en tiempo de ejecución y la sobrecarga de métodos en tiempo de compilación.
  • El polimorfismo en Python también se logra mediante la sobrecarga de operadores y métodos de clase.