Το πρόβλημα του διαμαντιού προκύπτει όταν μια κλάση κληρονομεί από δύο κλάσεις που μοιράζονται έναν κοινό πρόγονο, δημιουργώντας διφορούμενο: εάν και οι δύο ενδιάμεσες κλάσεις παρακάμπτουν μια μέθοδο (ή κρατούν ένα πεδίο), ποια έκδοση λαμβάνει η κάτω κλάση;
Το σχήμα του διαμαντιού
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
Στην Python (η οποία επιτρέπει την πολλαπλή κληρονομικότητα)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
