A gyémánt probléma akkor jelentkezik, amikor egy osztály két olyan osztályból örököl, amelyek egy közös őssel rendelkeznek, ami kétértelműséget hoz létre: ha mindkét középső osztály egy metódust (vagy mezőt) felülír, akkor az alsó osztály melyik verzióját kapja meg?
A gyémánt
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
Python-ban (amely lehetővé teszi a többszörös öröklést)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
