ปัญหาเพชรเกิดขึ้นเมื่อคลาสสืบทอดมาจากคลาสสองคลาสที่ใช้บรรพบุรุษร่วมกัน ซึ่งสร้างความกำกวม: หากคลาสกลางทั้งสองคลาสแทนที่เมธอด (หรือมีฟิลด์) คลาสล่างจะได้รับเวอร์ชันใด?
เพชร
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
ใน Python (ซึ่งอนุญาตการสืบทอดหลายทาง)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
