Herança múltipla
Em sistemas reais, uma classe pode precisar combinar comportamentos de várias fontes — um pato que voa e nada, um veículo anfíbio, ou um usuário que é administrador e editor. A herança múltipla permite isso, mas sem entender a ordem de resolução de métodos (MRO) você pode chamar o método errado ou ter conflitos inesperados. Dominar MRO evita bugs silenciosos e garante que seu código se comporte como esperado.
O PROBLEMA
Voador (voar), Nadador (nadar), Pato herda de ambos. Demonstre MRO.
EXEMPLO
Pato("Donald").voar() → voando
Pato.__mro__SOBRE O CONCEITO
A herança múltipla permite que uma classe herde de mais de uma superclasse. Em Python, a ordem de resolução de métodos (MRO) segue o algoritmo C3 linearization, que pode ser consultada com o atributo __mro__ da classe. Um erro comum é acreditar que o Python simplesmente escolhe o primeiro método encontrado em ordem de herança; na verdade, a MRO garante uma hierarquia consistente, respeitando a precedência da esquerda para a direita e a linearização das superclasses. No exemplo, Pato herda de Voador e Nadador. Se ambos tiverem um método mover, o conflito é resolvido pela ordem na declaração: class Pato(Voador, Nadador) fará o MRO priorizar Voador. Usar super() dentro dos métodos das superclasses (com a assinatura correta) é a forma recomendada de colaborar na cadeia de herança, evitando chamadas explícitas que quebram a ordem.
RESOLUÇÃO