El polimorfismo es la capacidad de tomar muchas formas, por ejemplo, si la clase padre tiene un método denominado ABC, quiere decir, que la clase hija puede tener un método con el mismo nombre ABC, que contenga sus propios parámetros y variables, en python se puede lograr sin ninguna afectacion o contrariedad en la ejecucion.
punto de vista de Python es complicado de explicar sin hablar del duck typing, por lo que te recomendamos la lectura.
Al ser un lenguaje con tipado dinámico y permitir duck typing, en Python no es necesario que los objetos compartan un interfaz, simplemente basta con que tengan los métodos que se quieren llamar.
Supongamos que tenemos un clase Animal con un método hablar().
class Animal:
def hablar(self):
passPor otro lado tenemos otras dos clases, Perro, Gato que heredan de la anterior. Además, implementan el método hablar() de una forma distinta.
class Perro(Animal):
def hablar(self):
print("Guau!")
class Gato(Animal):
def hablar(self):
print("Miau!")A continuación creamos un objeto de cada clase y llamamos al método hablar(). Podemos observar que cada animal se comporta de manera distinta al usar hablar().
for animal in Perro(), Gato():
animal.hablar()
# Guau!
# Miau!En el caso anterior, la variable animal ha ido “tomando las formas” de Perro y Gato. Sin embargo, nótese que al tener tipado dinámico este ejemplo hubiera funcionado igual sin que existiera herencia entre Perro y Gato, pero esta explicación la dejamos para el capítulo de duck typing