नई शैली की कक्षाओं में विधि समाधान आदेश (एमआरओ)?

| | | | | |

पुस्तक में संक्षेप में पायथन (दूसरा संस्करण) एक उदाहरण है जो
पुरानी शैली की कक्षाओं का उपयोग करके प्रदर्शित करता है कि क्लासिक रिज़ॉल्यूशन क्रम में विधियों को कैसे हल किया जाता है और
यह कैसा है नए आदेश से अलग

मैंने नई शैली में उदाहरण को फिर से लिखकर उसी उदाहरण की कोशिश की लेकिन परिणाम पुरानी शैली की कक्षाओं के साथ प्राप्त किए गए परिणाम से अलग नहीं है। उदाहरण को चलाने के लिए मैं जिस पायथन संस्करण का उपयोग कर रहा हूं वह 2.5.2 है। "बेस 1" क्लास बेस 2 (बेस 1): पास क्लास बेस 3 (ऑब्जेक्ट): डिफ एमेथोड (सेल्फ): प्रिंट "बेस 3" क्लास व्युत्पन्न (बेस 2, बेस 3): पास इंस्टेंस = व्युत्पन्न() इंस्टेंस। एमेथोड() प्रिंट व्युत्पन्न।__ एमआरओ__

कॉल instance.amethod() प्रिंट करता है Base1, लेकिन एमआरओ के साथ मेरी समझ के अनुसार कक्षाओं की नई शैली का आउटपुट Base3 होना चाहिए था। कॉल व्युत्पन्न.__mro__ प्रिंट:

(<class "__main__.Derived">, <class "__main__.Base2">, <class "__main__.Base1">, <class "__main__.Base3">, <type "object">)

मुझे यकीन नहीं है कि एमआरओ की मेरी समझ नए के साथ है या नहीं शैली कक्षाएं गलत हैं या मैं एक मूर्खतापूर्ण गलती कर रहा हूं जिसका मैं पता नहीं लगा पा रहा हूं। कृपया एमआरओ को बेहतर ढंग से समझने में मेरी मदद करें।