Polimorfismo en Python

¿Qué es el polimorfismo? La palabra polimorfismo significa tener muchas formas. En programación, polimorfismo significa que se usa el mismo nombre de función (pero diferentes firmas) para diferentes tipos.
Ejemplo de funciones polimórficas incorporadas: 
 

Python3

# Python program to demonstrate in-built poly-
# morphic functions
 
# len() being used for a string
print(len("geeks"))
 
# len() being used for a list
print(len([10, 20, 30]))
Producción: 

5
3

 

Ejemplos de funciones polimórficas definidas por el usuario: 
 

Python3

# A simple Python function to demonstrate
# Polymorphism
 
def add(x, y, z = 0):
    return x + y+z
 
# Driver code
print(add(2, 3))
print(add(2, 3, 4))
Producción: 

5
9

 

Polimorfismo con métodos de clase: 
el siguiente código muestra cómo Python puede usar dos tipos de clase diferentes, de la misma manera. Creamos un bucle for que itera a través de una tupla de objetos. Luego llame a los métodos sin preocuparse por qué tipo de clase es cada objeto. Suponemos que estos métodos realmente existen en cada clase. 
 

Python3

class India():
    def capital(self):
        print("New Delhi is the capital of India.")
 
    def language(self):
        print("Hindi is the most widely spoken language of India.")
 
    def type(self):
        print("India is a developing country.")
 
class USA():
    def capital(self):
        print("Washington, D.C. is the capital of USA.")
 
    def language(self):
        print("English is the primary language of USA.")
 
    def type(self):
        print("USA is a developed country.")
 
obj_ind = India()
obj_usa = USA()
for country in (obj_ind, obj_usa):
    country.capital()
    country.language()
    country.type()
Producción: 

New Delhi is the capital of India.
Hindi is the most widely spoken language of India.
India is a developing country.
Washington, D.C. is the capital of USA.
English is the primary language of USA.
USA is a developed country.

 

 
Polimorfismo con herencia: 
en Python, el polimorfismo nos permite definir métodos en la clase secundaria que tienen el mismo nombre que los métodos en la clase principal. En la herencia, la clase secundaria hereda los métodos de la clase principal. Sin embargo, es posible modificar un método en una clase secundaria que haya heredado de la clase principal. Esto es particularmente útil en los casos en que el método heredado de la clase principal no se ajusta del todo a la clase secundaria. En tales casos, volvemos a implementar el método en la clase secundaria. Este proceso de volver a implementar un método en la clase secundaria se conoce como anulación de métodos
 

Python3

class Bird:
  def intro(self):
    print("There are many types of birds.")
     
  def flight(self):
    print("Most of the birds can fly but some cannot.")
   
class sparrow(Bird):
  def flight(self):
    print("Sparrows can fly.")
     
class ostrich(Bird):
  def flight(self):
    print("Ostriches cannot fly.")
     
obj_bird = Bird()
obj_spr = sparrow()
obj_ost = ostrich()
 
obj_bird.intro()
obj_bird.flight()
 
obj_spr.intro()
obj_spr.flight()
 
obj_ost.intro()
obj_ost.flight()
Producción: 

There are many types of birds.
Most of the birds can fly but some cannot.
There are many types of birds.
Sparrows can fly.
There are many types of birds.
Ostriches cannot fly.

 

 
Polimorfismo con una Función y objetos: 
También es posible crear una función que pueda tomar cualquier objeto, permitiendo el polimorfismo. En este ejemplo, vamos a crear una función llamada “func()” que tomará un objeto al que llamaremos “obj”. Aunque estamos usando el nombre ‘obj’, cualquier objeto instanciado podrá ser llamado a esta función. A continuación, démosle a la función algo que hacer que use el objeto ‘obj’ que le pasamos. En este caso, llamemos a los tres métodos, a saber, capital(), language() y type(), cada uno de los cuales está definido en las dos clases ‘India’ y ‘USA’. A continuación, creemos instancias de las clases ‘India’ y ‘USA’ si aún no las tenemos. Con esos, podemos llamar a su acción usando la misma función func(): 
 

Python3

def func(obj):
    obj.capital()
    obj.language()
    obj.type()
  
obj_ind = India()
obj_usa = USA()
  
func(obj_ind)
func(obj_usa)

  
Código: Implementación de polimorfismo con una función 
 

Python3

class India():
    def capital(self):
        print("New Delhi is the capital of India.")
  
    def language(self):
        print("Hindi is the most widely spoken language of India.")
  
    def type(self):
        print("India is a developing country.")
  
class USA():
    def capital(self):
        print("Washington, D.C. is the capital of USA.")
  
    def language(self):
        print("English is the primary language of USA.")
  
    def type(self):
        print("USA is a developed country.")
 
def func(obj):
    obj.capital()
    obj.language()
    obj.type()
  
obj_ind = India()
obj_usa = USA()
  
func(obj_ind)
func(obj_usa)
Producción: 

New Delhi is the capital of India.
Hindi is the most widely spoken language of India.
India is a developing country.
Washington, D.C. is the capital of USA.
English is the primary language of USA.
USA is a developed country.

 

Publicación traducida automáticamente

Artículo escrito por Rahul_Roy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *