Timantti-ongelma ilmenee, kun luokka perii kahdesta luokasta, jotka jakavat yhteisen esi-isän, aiheuttaen epäselväyttä: jos molemmat välilliset luokat ohittavat menetelmän (tai pitävät kenttää), minkä version pohjalla oleva luokka saa?
Timantin muoto
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
Pythonissa (joka sallii moniperimisen)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
