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 Python programaciรณn en la 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 Operatoros

Un operador en Python Ayuda a realizar tareas matemรกticas y otras tareas de programaciรณn. Por ejemplo, el operador '+' ayuda a realizar sumas entre dos tipos de nรบmeros enteros en Python, y de la misma manera, el mismo operador ayuda a concatenar cadenas en Python programaciรณn.

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

Python Cรณdigo:

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 Python El lenguaje de programaciรณn son mรฉtodos que crea el usuario y se declara utilizando la palabra clave def con el nombre de la funciรณn.

Polimorfismo en el Python El lenguaje de programaciรณn 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 siguiente ejemplo que se muestra a continuaciรณn:

Python Cรณdigo:

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รฑados y hechos compatibles para ejecutar varios tipos de datos. En Python, 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.

La siguiente figura muestra cรณmo se puede aplicar el polimorfismo en Python en relaciรณn con las funciones integradas: โ€“

Polimorfismo en funciones

El siguiente programa ayuda a ilustrar la aplicaciรณn del polimorfismo en Python: -

Python Cรณdigo:

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

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 claves Python conceptos denominados anulaciรณn de mรฉtodo y sobrecarga de mรฉtodo.

  • En la sobrecarga de mรฉtodos, Python proporciona la caracterรญstica 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 mรฉtodo anulado, Python anula el valor que comparte un nombre similar en las clases padre e hija.

Tomemos el siguiente ejemplo de polimorfismo y herencia como se muestra a continuaciรณn:

Python Cรณdigo:

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

El Python La programaciรณn permite a los programadores lograr polimorfismo y sobrecarga de mรฉtodos con mรฉtodos de clase. Las diferentes clases en Python puede tener mรฉtodos que se declaran con el mismo nombre en todo el Python cรณdigo.

In Python, se pueden definir dos clases diferentes. Una serรญa la clase secundaria y deriva atributos de otra clase definida denominada clase principal.

El siguiente ejemplo ilustra el concepto de polimorfismo con mรฉtodos de clase: โ€“

Python Cรณdigo:

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 usan los mismos nombres de mรฉtodo info e init para proporcionar cotizaciones de precios respectivas 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 Python El programa resuelve la llamada. El polimorfismo en tiempo de compilaciรณn se logra mediante la sobrecarga de mรฉtodos.

El Python El compilador 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 varias otras tareas de programaciรณn.
  • Un mรฉtodo definido por el usuario en el Python El lenguaje de programaciรณn son mรฉtodos que crea el usuario y se declara utilizando la palabra clave def con el nombre de la funciรณn.
  • Polimorfismo en Python ofrece varias cualidades deseables, como por ejemplo 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.
  • Polimorfismo en Python Tambiรฉn se logra mediante la sobrecarga de operadores y mรฉtodos de clase.

Resumir este post con: