ダイヤモンド問題は、あるクラスが共通の祖先を持つ2つのクラスから継承する場合に発生し、曖昧性が生じます。両方の中間クラスがメソッドをオーバーライドしている場合(またはフィールドを保持している場合)、下位のクラスはどちらのバージョンを取得するのでしょうか?
ダイヤモンド
text
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
Python(多重継承を許可)
python
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
