Problem diamentu pojawia się, gdy klasa dziedziczy z dwóch klas, które mają wspólnego przodka, tworząc niejednoznaczność: jeśli obie klasy pośrednie przesłaniają metodę (lub przechowują pole), którą wersję otrzymuje klasa u dołu?
Diament
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
W Pythonie (który pozwala na dziedziczenie wielokrotne)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
