Herencia múltiple y MRO
Comprenda la herencia múltiple y el MRO de Python (linealización C3).
Herencia múltiple y MRO es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
Introducción
Sintaxis de la herencia múltiple
class A:
def hello(self): return 'A'
class B:
def world(self): return 'B'
class C(A, B): pass
c = C()
print(c.hello(), c.world())Orden de resolución de métodos (MRO)
class A:
def greet(self): return 'A'
class B:
def greet(self): return 'B'
class C(A, B): pass
print(C().greet()) # A wins
print(C.__mro__)Linealización C3
class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
print([c.__name__ for c in D.__mro__])Herencia en diamante
class A:
def __init__(self): print('A')
class B(A):
def __init__(self): super().__init__(); print('B')
class C(A):
def __init__(self): super().__init__(); print('C')
class D(B, C):
def __init__(self): super().__init__(); print('D')
D()Mixins
class JSONMixin:
def to_json(self):
import json
return json.dumps(vars(self))
class User(JSONMixin):
def __init__(self, name, age): self.name,self.age=name,age
print(User('Alice', 30).to_json())Reglas de diseño de los mixins
class LoggingMixin:
def log(self, msg): print(f'[{self.__class__.__name__}] {msg}')
class Service(LoggingMixin):
def run(self): self.log('running')
Service().run()super() en la herencia múltiple
class Base:
def action(self): return 'Base'
class A(Base):
def action(self): return 'A->' + super().action()
class B(Base):
def action(self): return 'B->' + super().action()
class C(A, B):
def action(self): return 'C->' + super().action()
print(C().action())type() para la creación dinámica de clases
def hello(self): return 'hello'
MyClass = type('MyClass', (object,), {'hello': hello})
print(MyClass().hello())Comprobación del MRO
class A: pass
class B(A): pass
class C(B): pass
import inspect
print([c.__name__ for c in inspect.getmro(C)])Cuándo evitar la herencia múltiple
# Prefer:
class User:
def __init__(self, name, logger):
self.name = name
self.logger = logger # composition
print('composition preferred')Comprobación rápida
Resumen
Siga avanzando
Preguntas frecuentes
¿La lección «Herencia múltiple y MRO» es gratis?
Sí — el texto completo de «Herencia múltiple y MRO» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Herencia múltiple y MRO»?
Comprenda la herencia múltiple y el MRO de Python (linealización C3). Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Herencia múltiple y MRO»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Herencia simple
- Sobrescritura de métodos y super()
- Herencia múltiple y MRO
- Polimorfismo y tipado de pato