ਡਾਇਮੰਡ ਸਮੱਸਿਆ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਕੋਈ ਕਲਾਸ ਦੋ ਕਲਾਸਾਂ ਤੋਂ ਇਨਹੈਰਿਟ ਕਰਦੀ ਹੈ ਜਿਹਨਾਂ ਦਾ ਇੱਕ ਸਾਂਝਾ ਵੋਂਆ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਅਸਪਸ਼ਟਤਾ ਪੈਦਾ ਹੁੰਦੀ ਹੈ: ਜੇਕਰ ਦੋਵੇਂ ਵਿਚਕਾਰਲੀ ਕਲਾਸਾਂ ਕਿਸੇ method ਨੂੰ override ਕਰਦੀਆਂ ਹਨ (ਜਾਂ ਕਿਸੇ field ਨੂੰ ਰੱਖਦੀਆਂ ਹਨ), ਤਾਂ ਤਲ ਵਾਲੀ ਕਲਾਸ ਕਿਹੜਾ ਸੰਸਕਰਣ ਪ੍ਰਾਪਤ ਕਰਦੀ ਹੈ?
ਡਾਇਮੰਡ
A (defines greet())
/ \
B C (each may override greet())
\ /
D ← inherits from B and C: which greet()?
Python ਵਿੱਚ (ਜਿਹੜੀ multiple inheritance ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ)
:
():
():
():
():
():
(B, C):
(D().greet())
(D.__mro__)
