La herencia en Python

La herencia en Python es un concepto de programación orientada a objetos que permite a una clase heredar atributos y métodos de otra clase. La clase que hereda se llama «clase derivada» o «subclase», y la clase de la que se heredan los atributos y métodos se llama «clase base» o «superclase».

La herencia se utiliza en Python para crear nuevas clases a partir de clases existentes, lo que facilita la reutilización de código y la organización de las clases de una manera jerárquica.

La herencia en Python

La herencia en Python

La herencia en Python se puede lograr al crear una clase que hereda de otra clase. Para hacer esto, especifique el nombre de la clase padre en paréntesis después del nombre de la clase hija. La clase hija hereda todos los atributos y métodos de la clase padre, y también puede tener atributos y métodos propios. Por ejemplo:

class Padre:
    def __init__(self, atributo_padre):
        self.atributo_padre = atributo_padre

    def metodo_padre(self):
        return "Método padre"

class Hija(Padre):
    def __init__(self, atributo_hija, atributo_padre):
        Padre.__init__(self, atributo_padre)
        self.atributo_hija = atributo_hija

    def metodo_hija(self):
        return "Método hija"

¿Una clase puede heredar de varias clases?

Sí, en Python, es posible tener una clase que herede de varias clases simultáneamente, lo que se conoce como herencia múltiple. La sintaxis para crear una clase con herencia múltiple consiste en especificar varios nombres de clases en los paréntesis después del nombre de la clase hija. La clase hija hereda atributos y métodos de todas las clases padre. Por ejemplo:

class Padre1:
    def metodo_padre1(self):
        return "Método padre 1"

class Padre2:
    def metodo_padre2(self):
        return "Método padre 2"

class Hija(Padre1, Padre2):
    pass

En este ejemplo, la clase Hija hereda atributos y métodos tanto de la clase Padre1 como de la clase Padre2.

Las clases anidadas

Las clases anidadas son clases que se definen dentro de otras clases. Una clase anidada es una clase completamente funcional que se comporta de la misma manera que cualquier otra clase, pero está «anidada» dentro de otra clase. Las clases anidadas pueden acceder a los atributos y métodos de la clase padre, lo que puede ser útil para organizar el código de manera más clara y eficiente.

Por ejemplo:

class ClasePadre:
    class ClaseHijo:
        def __init__(self, valor):
            self.valor = valor

        def display(self):
            print(self.valor)

nested_obj = ClasePadre.ClaseHijo(10)
nested_obj.display() # Output: 10

En este ejemplo, la clase ClaseHijo es una clase anidada dentro de la clase ClasePadre. La clase ClaseHijo tiene acceso a los atributos y métodos de la clase padre ClasePadre, y se puede utilizar de la misma manera que cualquier otra clase.

Algunos ejemplos para aclarar

Imagínate que tienes una familia de programadores. Tu padre es un desarrollador de videojuegos, tu madre es una diseñadora gráfica y tu abuelo es un programador retirado. Todos ellos tienen habilidades únicas que los hacen especiales.

Un día, decides convertirte en programador también. Pero en lugar de empezar desde cero, decides aprovechar las habilidades que tienes en casa. Así que decides «heredar» las habilidades de tu familia de programadores.

Primero, te diriges a tu padre, el desarrollador de videojuegos. Él te enseña cómo crear un juego simple y cómo estructurar el código para que sea fácil de entender. Ahora tienes una base sólida en programación.

Luego, te diriges a tu madre, la diseñadora gráfica. Ella te enseña cómo crear gráficos atractivos y cómo hacer que tu juego se vea bien. Ahora tu juego no solo funciona bien, sino que también se ve genial.

Finalmente, te diriges a tu abuelo, el programador retirado. Él te enseña algunos trucos y técnicas que solo los programadores experimentados conocen. Ahora eres un programador experimentado tú también.

En resumen, la herencia en Python te permite aprovechar las habilidades y conocimientos de las clases base para crear nuevas clases. Como en tu familia de programadores, esto puede ahorrarte tiempo y esfuerzo en la programación, y puede llevarte a tener un programa final exitoso y completo. ¡Y lo mejor de todo, no tienes que dividir la herencia con tus hermanos!

class FamiliaProgramadores:
    def __init__(self, nombre):
        self.nombre = nombre

    def saludar(self):
        print("Hola, soy", self.nombre, "y soy un programador.")

    def trabajar(self):
        print("Estoy trabajando en un proyecto emocionante!")

Ahora, imaginemos que queremos crear una subclase llamada «HijoProgramador» que hereda de la clase «FamiliaProgramadores» y añade algunos atributos y métodos adicionales:

class HijoProgramador(FamiliaProgramadores):
    def __init__(self, nombre, lenguaje):
        super().__init__(nombre)
        self.lenguaje = lenguaje

    def programar(self):
        print("Estoy programando en", self.lenguaje)

    def jugar(self):
        print("¡Hora de jugar a mi videojuego!")

En este ejemplo, la subclase «HijoProgramador» hereda el constructor y los métodos «saludar» y «trabajar» de la clase base «FamiliaProgramadores». Además, añade un nuevo método «programar» y un nuevo atributo «lenguaje». También incluye un método adicional llamado «jugar», porque, ¡incluso los programadores necesitan un poco de tiempo de juego!

Ahora podemos crear un objeto de la subclase «HijoProgramador» y llamar a sus métodos:

hijo = HijoProgramador("Juan", "Python")
hijo.saludar()    # Salida: Hola, soy Juan y soy un programador.
hijo.programar()  # Salida: Estoy programando en Python
hijo.trabajar()   # Salida: Estoy trabajando en un proyecto emocionante!
hijo.jugar()      # Salida: ¡Hora de jugar a mi videojuego!

En resumen, la herencia en Python te permite crear subclases que heredan los métodos y atributos de una clase base. La subclase puede añadir sus propios métodos y atributos adicionales, y especializarse para cumplir sus propias necesidades. ¡Y lo mejor de todo, puedes hacerlo todo sin dejar de divertirte!

El vídeo

Lo mismo, pero ahora en formato vídeo,

2 comentarios en “La herencia en Python

  1. LA
    La vero hace 11 meses

    me gustas pelado hermoso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *