Herança múltipla e MRO
Entenda a herança múltipla e a MRO do Python (linearização C3).
Herança múltipla e MRO é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
Introdução
Sintaxe da herança múltipla
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())Ordem de resolução 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__)Linearização 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__])Herança em 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()Componentes de composição
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())Regras de design para componentes de composição
class LoggingMixin:
def log(self, msg): print(f'[{self.__class__.__name__}] {msg}')
class Service(LoggingMixin):
def run(self): self.log('running')
Service().run()super() na herança múltipla
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 criação dinâmica de classes
def hello(self): return 'hello'
MyClass = type('MyClass', (object,), {'hello': hello})
print(MyClass().hello())Verificando o MRO
class A: pass
class B(A): pass
class C(B): pass
import inspect
print([c.__name__ for c in inspect.getmro(C)])Quando evitar a herança múltipla
# Prefer:
class User:
def __init__(self, name, logger):
self.name = name
self.logger = logger # composition
print('composition preferred')Verificação rápida
Recapitulação
Continue
Perguntas Frequentes
A aula “Herança múltipla e MRO” é grátis?
Sim — o texto completo de “Herança múltipla e MRO” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Herança múltipla e MRO”?
Entenda a herança múltipla e a MRO do Python (linearização C3). Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Herança múltipla e MRO”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Herança simples
- Sobrescrita de métodos e super()
- Herança múltipla e MRO
- Polimorfismo e tipagem pato