Het diamantprobleem ontstaat wanneer een klasse van twee klassen erft die een gemeenschappelijke voorouder delen, wat ambiguïteit creëert: als beide middelste klassen een methode overschrijven (of een veld bevatten), welke versie krijgt de onderste klasse?
Het diamant
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
In Python (wat meervoudige overerving toestaat)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
