Das Diamantenproblem tritt auf, wenn eine Klasse von zwei Klassen erbt, die einen gemeinsamen Vorfahren haben, was Mehrdeutigkeit erzeugt: Wenn beide mittleren Klassen eine Methode überschreiben (oder ein Feld halten), welche Version erhält die untere Klasse?
Warum es wichtig ist
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
In Python (das Mehrfachvererbung unterstützt)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
