पायथन मल्टीपल इनहेरिटेंस: यह क्या है और इसका उपयोग कैसे करें?

इस ट्यूटोरियल में, आप पायथन में कई विरासत के बारे में जानेंगे और इसे अपने प्रोग्राम में कैसे उपयोग कर सकते हैं। आप बहु-स्तरीय विरासत और विधि संकल्प क्रम के बारे में भी जानेंगे।

पायथन मल्टीपल इनहेरिटेंस

एक कक्षा C ++ के समान पायथन में एक से अधिक बेस क्लास से ली जा सकती है। इसे मल्टीपल इनहेरिटेंस कहा जाता है।

एकाधिक वंशानुक्रम में, सभी आधार वर्गों की विशेषताएं व्युत्पन्न वर्ग में विरासत में मिली हैं। एकाधिक वंशानुक्रम के लिए वाक्य रचना एकल वंशानुक्रम के समान है।

उदाहरण

 class Base1: pass class Base2: pass class MultiDerived(Base1, Base2): pass

यहाँ, MultiDerived वर्ग Base1 और Base2 वर्गों से लिया गया है।

पायथन में कई वंशानुक्रम

MultiDerived क्लास बेस 1 और बेस 2 दोनों वर्गों से विरासत में मिली है।

पायथन मल्टीलेवल इनहेरिटेंस

हम एक व्युत्पन्न वर्ग से भी विरासत में ले सकते हैं। इसे मल्टीलेवल इनहेरिटेंस कहा जाता है। यह पायथन में किसी भी गहराई का हो सकता है।

बहुस्तरीय विरासत में, बेस क्लास और व्युत्पन्न वर्ग की विशेषताएं नए व्युत्पन्न वर्ग में विरासत में मिली हैं।

संबंधित दृश्य के साथ एक उदाहरण नीचे दिया गया है।

 class Base: pass class Derived1(Base): pass class Derived2(Derived1): pass

यहाँ, Derived1 वर्ग बेस क्लास से लिया गया है, और Derived1 वर्ग Derived1 वर्ग से लिया गया है।

पायथन में बहुस्तरीय विरासत

पायथन में विधि संकल्प आदेश

पायथन में हर वर्ग वर्ग से लिया गया है object। यह पायथन में सबसे आधार प्रकार है।

तो तकनीकी रूप से, सभी अन्य वर्ग, या तो अंतर्निहित या उपयोगकर्ता-परिभाषित हैं, व्युत्पन्न वर्ग हैं और सभी ऑब्जेक्ट objectवर्ग के उदाहरण हैं ।

 # Output: True print(issubclass(list,object)) # Output: True print(isinstance(5.5,object)) # Output: True print(isinstance("Hello",object))

एकाधिक वंशानुक्रम परिदृश्य में, किसी भी निर्दिष्ट विशेषता को वर्तमान कक्षा में पहले खोजा जाता है। यदि नहीं मिला है, तो खोज दो बार समान कक्षा की खोज किए बिना गहराई-पहले, बाएं-दाएं फैशन में मूल कक्षाओं में जारी रहती है।

तो, के ऊपर के उदाहरण में MultiDerivedवर्ग खोज आदेश है ( MultiDerived, Base1, Base2, object)। इस आदेश को MultiDerivedवर्ग के रैखिककरण भी कहा जाता है और इस आदेश को खोजने के लिए उपयोग किए जाने वाले नियमों के सेट को विधि संकल्प आदेश (एमआरओ) कहा जाता है ।

एमआरओ को स्थानीय वरीयता क्रम को रोकना चाहिए और एकरसता प्रदान करनी चाहिए। यह सुनिश्चित करता है कि एक वर्ग हमेशा अपने माता-पिता के सामने आए। कई माता-पिता के मामले में, आदेश आधार कक्षाओं के ट्यूपल्स के समान है।

एक वर्ग के MRO को __mro__विशेषता या mro()विधि के रूप में देखा जा सकता है । पूर्व एक टपल लौटाता है जबकि दूसरा एक सूची देता है।

 >>> MultiDerived.__mro__ (, , , ) >>> MultiDerived.mro() (, , , )

यहाँ एमआरओ के साथ कुछ अधिक जटिल कई विरासत उदाहरण और इसके दृश्य हैं।

पायथन में कई विरासत की कल्पना करना
 # Demonstration of MRO class X: pass class Y: pass class Z: pass class A(X, Y): pass class B(Y, Z): pass class M(B, A, Z): pass # Output: # (, , # , , # , , # ) print(M.mro())

आउटपुट

 (,,,,,,)

एमआरओ की गणना कैसे की जाती है, इस पर वास्तविक एल्गोरिदम जानने के लिए एमआरओ पर चर्चा पर जाएं।

दिलचस्प लेख...