Problemi i diamantit lind kur një klasë trashëgon nga dy klasë që ndajnë një paraardhës të përbashkët, duke krijuar paqartësi: nëse të dyja klasat e mesme përshkruajnë një metodë (ose mbajnë një fushë), cilën version merr klasa e poshtme?
Diamanti
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
Në Python (i cili lejon trashëgiminë e shumëfishtë)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
