Problema diamantului apare atunci când o clasă moștenește din două clase care au un strămoș comun, creând o ambiguitate: dacă ambele clase intermediare suprascriau o metodă (sau dețin un câmp), care versiune o obține clasa din partea de jos?
Diamantul
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
În Python (care permite moștenirea multiplă)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
