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

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

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

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

सिंटैक्स

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

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

उदाहरण

#!/usr/bin/python
class Parent: # define parent class
   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): # define child class
   def __init__(self):
      print "Calling child constructor"
   def childMethod(self):
      print 'Calling child method'
c = Child()       # instance of child
c.childMethod()   # child calls its method
c.parentMethod()  # calls parent's method
c.setAttr(200)    # again call parent's method
c.getAttr()       # again call parent's method

आउटपुट

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

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

इसी तरह, आप निम्न प्रकार से एक से अधिक पैरेंट क्लास से एक क्लास चला सकते हैं -

class A: # define your class A
.....
class B: # define your class B
.....
class C(A, B): # subclass of A and B
.....

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

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

  1. सी ++ बनाम जावा में विरासत

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

  1. C++ में एकाधिक वंशानुक्रम

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

  1. पायथन में विरासत

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