13 - El concepto de herencia en la Programación Orientada a Objetos
Lección 13 del curso Python Nivel Avanzado.
Tabla de contenido
Introducción
En la práctica anterior vimos cómo diseñar e implementar una app de productividad usando la Programación Orientada a Objetos en Python y allí pusimos en práctica los conceptos de clases, métodos, atributos e instancias.
Pero resulta que a partir de las clases, como las que hemos creado hasta ahora, podemos crear nuevas clases agregando funcionalidades adicionales, lo que hace más versátil y flexible nuestro programa.
Cuando creamos una clase a partir de otra clase existente estamos usando lo que se conoce como herencia, así que en esta lección veremos en detalle este concepto.

Suscríbete para tener acceso al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
¿Qué es la herencia?
Supongamos que implementamos un programa determinado que nos permite manipular y operar sobre diferentes figuras geométricas.
Así que creamos la clase FiguraGeometrica
que contiene el atributo tipo
y el método mostrar_tipo
que nos indican el tipo de figura que tendremos una vez instanciada la clase e imprimirá esta información en pantalla.
Pero sabemos que podemos tener dos grandes familias de figuras geométricas: las bidimensionales y las tridimensionales. Y cada una es una FiguraGeometrica
pero tendrá características diferentes.
Así que a partir de FiguraGeometrica
podremos crear dos nuevas clases (Figura2D
y Figura3D
) que seguirán teniendo el atributo tipo, pero a las cuales además podremos añadirle los atributos area
(en el caso 2D) y volumen
(en el caso 3D).
Pero si nos enfocamos en cada una de estas nuevas clases podemos ver que hay diferentes tipos de figura 2D y 3D.
Por ejemplo, en el caso 2D podemos tener un círculo, que es una Figura2D
pero que además del área tendrá por ejemplo un radio
, o un rectángulo, que además del área tendrá por ejemplo el tamaño de sus lados. Y en el caso 3D podemos tener una esfera y un cono, que además del volumen tendrán atributos como el radio (en ambos casos) o la altura (en el caso del cono).
Así, hemos vismo que de FiguraGeometrica
se derivan las clases Figura2D
y Figura3D
, y que de estas dos últimas se derivan las clases circulo
y triangulo
y esfera
y cono
respectivamente.
Estas clases derivadas poseen los mismos atributos y métodos de la clase original: todas tienen el atributo tipo
y el método mostrar_tipo
, todas las clases derivadas de Figura2D
tienen el atributo area
y todas las derivadas de Figura3D
tienen el atributo volumen
.
Así que podemos ver que es como si FiguraGeometrica
fuese la clase padre (o madre) y como si Figura2D
y Figura3D
fueren las clases hijo/a y hubiesen heredado las características de la clase padre (el atributo tipo
).
A su vez las clases circulo
y triangulo
son herederas de la clase Figura2D
y también han heredado sus atributos, al igual que las clases esfera
y cono
que heredan las características de la clase Figura3D
.
Así que en la programación orientada a objetos la herencia es el procedimiento en el cual una clase hereda los atributos y métodos de otra clase.
Terminología: clase base y subclases
En el ejemplo anterior podemos decir que la clase FiguraGeometrica
es la clase base, a partir de la cual se derivan todas las demás subclases.
Así, Figura2D
y Figura3D
son subclases de FiguraGeometrica
, mientras que circulo
y triangulo
lo son de Figura2D
y esfera
y cono
lo son de 3D.
Por qué es útil el concepto de herencia
Este concepto de herencia resulta muy útil en la Programación Orientada a Objetos porque nos permite extender una clase base (como FiguraGeometrica
) para lograr especializarla a través de subclases con nuevos métodos y atributos.
Y esto a su vez permite reutilizar el código y hace que nuestros programas puedan evolucionar a medida que agregamos más complejidad a los mismos.

Recuerda suscribirte para acceder al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Conclusión
Ya tenemos claro el concepto de herencia, una herramienta fundamental en la Programación Orientada a Objetos, y que consiste en crear subclases que heredarán los atributos y métodos de la clase base de la cual se derivan.
Así que en la próxima lección veremos cómo poner en práctica este concepto, a través de la implementación de la herencia en Python.