Translate

jueves, 5 de febrero de 2026

Herencia Múltiple en Python


En la mayoría de los lenguajes orientados a objetos, una clase hereda de una sola clase base.

Sin embargo, Python permite herencia múltiple, lo que significa que una clase puede derivar de más de una clase padre.


class A:

    def metodo(self):

        print("Método de A")


class B:

    def metodo(self):

        print("Método de B")


class C(A, B):  # Hereda de A y B

    pass


obj = C()

obj.metodo()


Salida : Método de A


Python resuelve los métodos según el orden de resolución de métodos (MRO, Method Resolution Order).

En este caso, busca primero en A, luego en B, y finalmente en object.


Podemos ver el orden con:

print(C.__mro__)


Que muestra algo como:

(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)



Python permite usar super() para encadenar llamadas a métodos en la jerarquía.


class A:

    def metodo(self):

        print("A.metodo()")

        super().metodo()


class B:

    def metodo(self):

        print("B.metodo()")

        super().metodo()


class C:

    def metodo(self):

        print("C.metodo()")


class D(A, B, C):

    pass


d = D()

d.metodo()


Salida: 

A.metodo()

B.metodo()

C.metodo()


El orden sigue el MRO: D → A → B → C → object.


Una forma muy común de usar herencia múltiple en Python es con mixins: clases pequeñas que agregan comportamiento extra sin ser jerarquías principales.


class LoggerMixin:

    def log(self, mensaje):

        print(f"[LOG]: {mensaje}")


class Worker:

    def trabajar(self):

        print("Trabajando...")


class Empleado(LoggerMixin, Worker):

    def realizar_tarea(self):

        self.log("Iniciando tarea")

        self.trabajar()


e = Empleado()

e.realizar_tarea()


Salida:

[LOG]: Iniciando tarea

Trabajando...


Los mixins son una forma elegante de reutilizar código sin acoplar las clases principales.


Resumiendo:

  • Python permite herencia múltiple.
  • El MRO define el orden en que se buscan los métodos.
  • super() respeta ese orden automáticamente.
  • Los mixins son el uso más común y limpio de la herencia múltiple.