Python · Avançado · Português · Técnico
MRO
Method Resolution Order: a ordem em que o Python procura um atributo ou método nas classes da hierarquia. É calculada pelo algoritmo C3, que respeita a ordem de herança.
Onde usar
Importa na herança múltipla e nas chamadas de super(). Para ver a ordem, use Classe.__mro__ ou Classe.mro(); se as bases forem inconsistentes, o Python recusa a classe com TypeError.
Em código
class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
print([k.__name__ for k in D.__mro__])Exemplos
Confira a MRO para ver qual método será chamado.
O erro aparece porque a MRO é inconsistente com a ordem das bases.
Cuidado
O super() não chama necessariamente a classe pai direta; ele segue a próxima classe na MRO da instância.
Sinônimos
ordem de resolução de métodos
Origem
Sigla do inglês Method Resolution Order.