Le problème du diamant survient quand une classe hérite de deux classes qui partagent un ancêtre commun, créant une ambiguïté : si les deux classes intermédiaires surchargent une méthode (ou contiennent un champ), quelle version la classe inférieure obtient-elle ?
Le diamant
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
En Python (qui permet l'héritage multiple)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
