¿Cómo funciona la herencia en Python? En este artículo te descubrimos los conceptos básicos, como funciona la herencia simple y múltiple. Además, también hablaremos del polimorfismo y los errores más comunes.

Al realizar un Curso de Programación en Python abarcarás desde los principios básicos hasta alcanzar el nivel de los profesionales. Ponte al día con ellos en este artículo.

Conceptos básicos de herencia en Python

Reutilizar piezas de código agiliza los flujos de trabajo y esa es la esencia de la programación orientada a objetos (POO). En este apartado te exponemos los conceptos básicos sobre herencia en Python, es decir, las clases y métodos.

Clase

No es casualidad que la herencia en Python funcione como un árbol genealógico. Dentro de la estructura del código encontrarás clases base con una serie de atributos y métodos que heredarán las subclases.

La herencia en Python funciona como un árbol genealógico, las clases padres dan atrributos a las clases hijas.

  • Clase base, también conocida como superclase o padre. Contiene atributos que heredarán las clases derivadas.
  • Clase derivada, hija o subclase, hereda de la superclase. Pero también puede añadir nuevos atributos o extenderlos en las siguientes clases.

En el libro Python para todos, Raúl González Duque establece una analogía del POO con modelar instrumentos musicales. La clase padre sería “instrumento”, mientras que “batería”, “bajo” o “guitarra” serían clases hijas.

Métodos

Además de las clases, la herencia en Python también funciona a través de métodos. Son funciones que están asociadas a un objeto particular y se definen en instancias dentro de una clase.

Los métodos son funciones asociadas a un objeto particular y se definen en instancias dentro de una clase.

Cuando se introduce la instancia, el método accede a los atributos. También hay otro tipo de método: el que es estático. De tal forma que el llamamiento se hace directamente sin necesidad de crear una instancia.

Implementando herencia simple y múltiple en Python

En Python se pueden implementar herencias simples o múltiples y la principal diferencia es la jerarquía. Es decir, el tipo de relación entre las clases y subclases. Entraremos en materia sobre cada una de ellas.

Las herencias simples y múltiples se diferencian en la relación de las clases base con las subclases.

Implementar la herencia simple

Implementar herencias simples en Python significa crear relaciones en las que una subclase solo responde a una clase base. Por poner un ejemplo: Golondrina sería una subclase de Pájaro, que sería su clase padre y de la extraería los atributos.

Implementar la herencia múltiple

En el caso de una herencia múltiple, la clase derivada puede responder a distintas super clases. Por ejemplo, la subclase murciélago podría responder a las super clases mamífero y ave. Extraería los atributos de ambas clases.

Errores comunes y soluciones en herencia con Python

¿Cuáles son los errores más comunes cuando hablamos de herencia con Python? Pueden darse estructuras donde se produzca sobrecarga, problemas de inicialización o lo que se conoce como la herencia circular.

No temas, no solo te contaremos en qué consisten, también te daremos las claves para que salgas del apuro. ¡Allá vamos!

Conflictos de nombre en métodos o atributos

Puede darse la situación de atribuir a clases derivadas varias super clases cuando solo debería aplicar una, por un tema de nomenclatura.

Para resolver este conflicto, debes utilizar la notación super() para llamar al método de la clase base específica.

Métodos o atributos no encontrados

Muchas veces sucede que se pide a una clase hija que acceda a métodos que no se encuentran en su clase padre.

La forma de resolver este error es llamar a los métodos de la clase padre con un super() y que acceda a los atributos que sí le corresponden.

Problemas de inicialización en clases derivadas

Es muy frecuente que, a lo largo del código, se exijan inicializaciones en clases derivadas que no se encuentran definidas en las super clases.

La solución es emplear super() para llamar al constructor de la clase padre e inicializar los atributos que sí corresponden.

Herencia circular

En ocasiones, se plantea una estructura en la que la herencia es cíclica. Python es un lenguaje que no maneja adecuadamente estos recursos, por ello, es recomendable que plantees otras alternativas.

Sobrecarga excesiva

El planteamiento de la ejecución de múltiples herencias puede suponer una sobrecarga en el código. No conviene pasarse con las atribuciones.

Si la ejecución plantea dificultades, se recomienda replantear la estructura del código para que sea sostenible y eficiente.

¡Domina Python con una buena formación!

Esto es solo el principio, una introducción a uno de los lenguajes más populares del mercado. Puedes especializarte en él desde casa, con una metodología flexible y recursos elaborados por profesionales de primera.

Además, Python es un lenguaje que forma parte del auge de la Inteligencia Artificial, Machine Learning y Deep Learning. Con la formación de Tokio School podras especializarte en todas ellas.

El curso de Tokio School te ofrece todas estas ventajas y más, como bolsas de empleo y facilidades para acceder al mercado laboral. Rellena el formulario y que sean los asesores los que te den información de primera mano. ¡Apuesta por ti!

Bibliografía: