Saltar al contenido

Herencia en Python

Comprender la herencia en Python

La herencia es una característica poderosa en la programación orientada a objetos que permite crear nuevas clases basadas en clases existentes. En Python, la herencia se implementa utilizando la palabra clave class, lo que permite crear una nueva clase como hija o subclase de una clase existente.

Los fundamentos de la herencia

La herencia nos permite crear una nueva clase al heredar propiedades de una clase existente, conocida como clase padre o base. La clase hija o derivada hereda todos los atributos y métodos de la clase padre y también puede agregar sus propios atributos y métodos.

Por ejemplo, supongamos que tenemos una clase Vehicle con propiedades como make, model y year, y métodos como start y stop. Podemos crear una clase Car que herede de Vehicle y agregue sus propias propiedades como num_doors y num_seats. La clase Car también puede sobrescribir métodos como start y stop si es necesario.

Sintaxis de herencia en Python

La sintaxis para la herencia en Python es sencilla. Para crear una subclase, debemos especificar el nombre de la clase padre entre paréntesis después del nombre de la nueva clase. Aquí tienes un ejemplo:

Herencia en clases de Python

python
class Vehicle:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        
    def start(self):
        print(f"{self.make} {self.model} started.")
        
    def stop(self):
        print(f"{self.make} {self.model} stopped.")

class Car(Vehicle):
    def __init__(self, make, model, year, num_doors, num_seats):
        super().__init__(make, model, year)
        self.num_doors = num_doors
        self.num_seats = num_seats

En este ejemplo, la clase Car hereda de la clase Vehicle utilizando la notación entre paréntesis, y su método __init__ llama al método __init__ de la clase padre usando la función super().

Sobrescritura de métodos

En la herencia de Python, una clase hija puede sobrescribir los métodos de la clase padre si es necesario. Esto se hace definiendo un método con el mismo nombre en la clase hija.

Sobrescribir los métodos de la clase padre en Python

python
class Vehicle:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        
    def start(self):
        print(f"{self.make} {self.model} started.")
        
    def stop(self):
        print(f"{self.make} {self.model} stopped.")

class Car(Vehicle):
    def start(self):
        print(f"{self.make} {self.model} revved the engine and started.")

En este ejemplo, la clase Car sobrescribe el método start de la clase Vehicle para agregar un mensaje que indica que el motor está acelerando antes de arrancar.

Herencia múltiple

Python también permite la herencia múltiple, donde una subclase puede heredar de varias clases padre. Para ello, listamos las clases padre entre paréntesis, separadas por comas.

Herencia múltiple en Python

python
class Animal:
    def __init__(self, name):
        self.name = name
        
    def speak(self):
        raise NotImplementedError("Subclass must implement abstract method")

class Mammal(Animal):
    def nurse(self):
        pass
    
class Reptile(Animal):
    def lay_eggs(self):
        pass
    
class Platypus(Mammal, Reptile):
    def __init__(self, name):
        super().__init__(name)

En este ejemplo, la clase Platypus hereda tanto de las clases Mammal como Reptile, las cuales heredan de la clase Animal. La clase Platypus no necesita implementar el método speak ya que se hereda de la clase Animal a través de sus clases padre.

Beneficios de la herencia

La herencia proporciona varios beneficios a los programadores:

  1. Reutilización de código: Al heredar de clases existentes, podemos reutilizar código sin tener que reescribirlo. Esto ahorra tiempo y reduce la cantidad de código que necesitamos escribir.
  2. Extensibilidad: La herencia nos permite agregar nueva funcionalidad a clases existentes sin modificar su código directamente. Esto ayuda a mantener el código organizado y más fácil de mantener.
  3. Polimorfismo: La herencia nos permite crear objetos que pueden tratarse como instancias de sus clases padre o hija, lo que permite un código más flexible y modular.

Conclusión

La herencia es un concepto fundamental en la programación orientada a objetos que permite la creación de nuevas clases basadas en clases existentes. Python proporciona una sintaxis simple y poderosa para implementar la herencia, lo que permite la reutilización de código, la extensibilidad y el polimorfismo.

Al comprender los fundamentos de la herencia y sus beneficios, los programadores pueden crear código más eficiente y modular que pueda mantenerse y extenderse fácilmente en el futuro.

Práctica

¿Cuáles de las siguientes afirmaciones sobre la herencia en Python son correctas según la información proporcionada en la URL especificada?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.