Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

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


स्क्रैच से शुरू करने के बजाय, आप एक प्रीएक्सिस्टिंग क्लास से इसे प्राप्त करके एक क्लास बना सकते हैं, नई क्लास के नाम के बाद पैरेंट क्लास को पैरेंथेसिस में सूचीबद्ध करके।

चाइल्ड क्लास अपने पैरेंट क्लास के एट्रिब्यूट्स को इनहेरिट करती है, और आप उन एट्रिब्यूट्स का उपयोग कर सकते हैं जैसे कि वे चाइल्ड क्लास में परिभाषित किए गए हों। एक चाइल्ड क्लास पैरेंट से डेटा मेंबर्स और मेथड्स को भी ओवरराइड कर सकती है।

सिंटैक्स

डेराइव्ड क्लासेस को उनके पैरेंट क्लास की तरह ही घोषित किया जाता है; हालांकि, इनहेरिट करने के लिए बेस क्लासेस की एक सूची क्लास के नाम के बाद दी जाती है:

class SubClassName (ParentClass1[, ParentClass2, ...]):
    'Optional class documentation string'
    class_suite

उदाहरण

#!/usr/bin/python
class Parent:  # पैरेंट क्लास परिभाषित करें
    parentAttr = 100
    def __init__(self):
        print "Calling parent constructor"
    def parentMethod(self):
        print 'Calling parent method'
    def setAttr(self, attr):
        Parent.parentAttr = attr
    def getAttr(self):
        print "Parent attribute :", Parent.parentAttr

class Child(Parent):  # चाइल्ड क्लास परिभाषित करें
    def __init__(self):
        print "Calling child constructor"
    def childMethod(self):
        print 'Calling child method'

c = Child()   # चाइल्ड का इंस्टेंस
c.childMethod()  # चाइल्ड अपने मेथड को कॉल करता है
c.parentMethod()  # पैरेंट के मेथड को कॉल करता है
c.setAttr(200)  # फिर से पैरेंट के मेथड को कॉल करता है
c.getAttr()  # फिर से पैरेंट के मेथड को कॉल करता है

आउटपुट

जब उपरोक्त कोड निष्पादित होता है, तो यह निम्नलिखित परिणाम देता है:

Calling child constructor
Calling child method
Calling parent method
Parent attribute : 200

इसी तरह, आप एक क्लास को मल्टीपल पैरेंट क्लासेस से डेराइव कर सकते हैं:

class A:  # अपनी क्लास A परिभाषित करें .....
class B:  # अपनी क्लास B परिभाषित करें .....
class C(A, B):  # A और B की सबक्लास .....

आप दो क्लासेस और इंस्टेंसेस के रिश्ते की जांच के लिए issubclass() या isinstance() फ़ंक्शन्स का उपयोग कर सकते हैं।

  • issubclass(sub, sup) बूलियन फ़ंक्शन true लौटाता है यदि दी गई सबक्लास sub वास्तव में सुपरक्लास sup की सबक्लास है।
  • isinstance(obj, Class) बूलियन फ़ंक्शन true लौटाता है यदि obj क्लास Class का इंस्टेंस है या Class की सबक्लास का इंस्टेंस है।

  1. - C++ में इनहेरिटेंस बनाम Java में इनहेरिटेंस

    C++ और Java में इनहेरिटेंस की अवधारणा है। इनहेरिटेंस गुणों का उपयोग कोड को पुन: उपयोग करने और दो ऑब्जेक्ट्स के बीच संबंध बनाने के लिए किया जाता है। यहां हम C++ में इनहेरिटेंस और Java में इनहेरिटेंस के बीच कुछ बुनियादी अंतर देखेंगे। 1. ऑब्जेक्ट क्लास रूट Java में: सभी क्लासेस Object क्लास को एक्सटे

  1. C++ में मल्टीपल इनहेरिटेंस C++ में मल्टीपल इनहेरिटेंस

    मल्टीपल इनहेरिटेंस तब होता है जब कोई क्लास एक से अधिक बेस क्लास से इनहेरिट करती है। इसलिए क्लास मल्टीपल इनहेरिटेंस का उपयोग करके कई बेस क्लासेज से सुविधाएं इनहेरिट कर सकती है। यह C++ जैसी ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं की एक महत्वपूर्ण विशेषता है। मल्टीपल इनहेरिटेंस को प्रदर्शित करने वाला एक

  1. पायथन में इनहेरिटेंस (Inheritance) पायथन में इनहेरिटेंस (Inheritance)

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में इनहेरिटेंस और क्लासेस को एक्सटेंड करने के बारे में जानेंगे।इनहेरिटेंस वास्तविक दुनिया के संबंधों को अच्छी तरह से दर्शाता है, पुन: प्रयोज्यता प्रदान करता है और ट्रांजिटिविटी का समर्थन करता है। यह तेज़ विकास समय, आसान रखरखाव और विस्तार में आसानी प्र