O problema do diamante surge quando uma classe herda de duas classes que compartilham um ancestral comum, criando ambiguidade: se ambas as classes intermediárias sobrescrevem um método (ou possuem um campo), qual versão a classe inferior obtém?
O diamante
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
Em Python (que permite herança múltipla)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
