Saltearse al contenido

Herencia

La herencia es un pilar fundamental de la programación orientada a objetos. Permite crear nuevas clases basadas en clases existentes, reutilizando y extendiendo su funcionalidad. Así, puedes modelar relaciones del tipo “es un” (por ejemplo, un Perro es un Animal).


  • Reutilización de código: Evita repetir atributos y métodos comunes.
  • Organización: Permite estructurar jerarquías lógicas entre clases.
  • Extensión: Puedes agregar o modificar comportamientos en las subclases.

Para crear una clase que hereda de otra, simplemente indica la clase base entre paréntesis:

class ClaseBase:
# atributos y métodos
class SubClase(ClaseBase):
# nuevos atributos y métodos

Supongamos que tienes una clase Animal y quieres crear una clase Perro que herede de ella:

Herencia básica
class Animal:
    def __init__(self, nombre):
        self.nombre = nombre
    def hablar(self):
        print('Hace un sonido')
class Perro(Animal):
    def hablar(self):
        print(f'{self.nombre} dice: ¡Guau!')
mi_perro = Perro('Rex')
mi_perro.hablar() # Rex dice: ¡Guau!

En este ejemplo, Perro hereda el atributo nombre y el método hablar de Animal, pero lo redefine para personalizar el comportamiento.


Puedes llamar métodos de la clase base usando super(). Esto es útil para extender la funcionalidad sin reemplazarla completamente.

Uso de super()
class Animal:
    def __init__(self, nombre):
        self.nombre = nombre
    def describir(self):
        print(f'Soy un animal llamado {self.nombre}')
class Gato(Animal):
    def describir(self):
        super().describir()
        print('Y soy un gato.')
g = Gato('Michi')
g.describir()

Salida:

Soy un animal llamado Michi
Y soy un gato.

En Python, una clase puede heredar de varias clases a la vez:

class ClaseA:
pass
class ClaseB:
pass
class SubClase(ClaseA, ClaseB):
pass

  • La herencia permite crear clases que reutilizan y extienden otras.
  • Usa super() para acceder a métodos de la clase base.
  • Puedes redefinir métodos para personalizar el comportamiento en las subclases.
  • Python permite herencia múltiple.

¿Listo para practicar? Intenta crear una clase base Vehiculo y una subclase Coche que agregue un método propio.