Want to create interactive content? It’s easy in Genially!

Get started free

5100_UD02_1.4

CESUR

Created on January 30, 2026

Start designing with a free template

Discover more than 1500 professional designs like these:

Create Your Story in Spanish

Microcourse: Key Skills for University

Microcourse: Learn Spanish

History Timeline

Education Timeline

Body Parts Game

Resource Bank

Transcript

Herencia múltiple y MRO

Sintaxis de herencia múltiple

Method Resolution Order (MRO)

Visualización del MRO

Mixins

Problema del diamante

Problema del diamante

El problema del diamante surge cuando una clase hereda de dos clases que a su vez heredan de una clase común, formando una estructura en forma de diamante en el diagrama de herencia. Sin un mecanismo de resolución adecuado, esta situación genera ambigüedad sobre qué versión de los métodos de la clase base común debe utilizarse. El algoritmo C3 de Python resuelve este problema garantizando que cada clase aparezca solo una vez en el MRO y evitando

Mixins

Los mixins representan un patrón de diseño específico para herencia múltiple donde pequeñas clases proporcionan funcionalidades concretas que pueden combinarse libremente. Un mixin típicamente no está diseñado para instanciarse directamente, sino para añadir capacidades específicas mediante herencia. Por ejemplo, un LoggerMixin puede proporcionar métodos de registro, un SerializableMixin puede añadir capacidad de serialización JSON, y una clase concreta puede heredar de ambos para obtener ambas funcionalidades sin duplicar código.

Visualización del MRO

La visualización del MRO de cualquier clase se obtiene mediante el atributo _mro_ o el método mro(), que retornan una tupla con todas las clases en el orden exacto en que Python las consultará. Esta información resulta invaluable durante el desarrollo y depuración de jerarquías complejas, permitiendo comprender exactamente qué implementación de un método se ejecutará. El MRO siempre termina con la clase object, que es la clase base de todas las clases en Python.

Method Resolution Order (MRO)

El Method Resolution Order (MRO) define el orden en que Python busca métodos y atributos cuando una clase hereda de múltiples padres. Este mecanismo resulta crucial para resolver ambigüedades que surgen cuando varias clases padre definen métodos con el mismo nombre. Python utiliza el algoritmo C3 Linearization para calcular el MRO, garantizando un orden de búsqueda consistente y predecible que respeta las relaciones de herencia declaradas y mantiene el orden de izquierda a derecha especificado.

Sintaxis de herencia múltiple

La sintaxis de herencia múltiple extiende la declaración de clase para incluir múltiples clases padre separadas por comas: class ClaseHija(Padre1,Padre2,Padre3):. Esta declaración indica que ClaseHija hereda atributos y métodos de todas las clases especificadas, combinando sus funcionalidades en una única entidad. Por ejemplo, una clase VehiculoAnfibio podría heredar simultáneamente de VehiculoTerrestre y VehiculoAcuatico, obteniendo capacidades de desplazamiento tanto en tierra como en agua.