Problém s diamantem vzniká, když třída dědí od dvou tříd, které mají společného předka, čímž se vytváří nejasnost: pokud obě střední třídy přepíšou metodu (nebo obsahují pole), kterou verzi dostane spodní třída?
Tvar diamantu
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
V Pythonu (který umožňuje vícenásobnou dědičnost)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
