Masalah diamond muncul ketika sebuah kelas mewarisi dari dua kelas yang berbagi nenek moyang yang sama, menciptakan ambiguitas: jika kedua kelas tengah menimpa sebuah method (atau memegang field), versi mana yang didapat kelas bawah?
Diamond
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
Di Python (yang memungkinkan pewarisan berganda)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
