Vấn đề kim cương (diamond problem) nảy sinh khi một class kế thừa từ hai class cùng chia sẻ một tổ tiên chung, tạo ra sự mơ hồ: nếu cả hai class trung gian đều override một method (hoặc giữ một field), thì class dưới cùng nhận phiên bản nào?
Hình kim cương
A (định nghĩa greet())
/ \
B C (mỗi cái có thể override greet())
\ /
D ← kế thừa từ B và C: greet() nào?
Trong Python (vốn cho phép đa kế thừa)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
