स्क्रैच से शुरू करने के बजाय, आप नए वर्ग के नाम के बाद पैरेंट क्लास को कोष्ठक में सूचीबद्ध करके इसे पहले से मौजूद क्लास से प्राप्त करके एक क्लास बना सकते हैं।
चाइल्ड क्लास को अपने पैरेंट क्लास की विशेषताएँ विरासत में मिलती हैं, और आप उन एट्रिब्यूट्स का उपयोग इस तरह कर सकते हैं जैसे कि उन्हें चाइल्ड क्लास में परिभाषित किया गया हो। चाइल्ड क्लास माता-पिता के डेटा सदस्यों और विधियों को भी ओवरराइड कर सकती है।
सिंटैक्स
व्युत्पन्न वर्गों को उनके मूल वर्ग की तरह घोषित किया जाता है; हालांकि, इनहेरिट करने के लिए बेस क्लास की सूची क्लास के नाम के बाद दी गई है -
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 क्लास क्लास का उदाहरण है या क्लास के उपवर्ग का उदाहरण है