इनहेरिटेंस ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक शक्तिशाली अवधारणा है। यह कोड को व्यवस्थित करने का एक तरीका है, और विशेष रूप से तब उपयोगी होता है जब आपके पास कई क्लासेज़ हों जो एक-दूसरे से संबंधित हों। इनहेरिटेंस एक क्लास को दूसरी क्लास से सभी मेथड्स और गुणों को प्राप्त करने की अनुमति देती है, जिससे कोड का पुन: उपयोग होता है और क्लासेज़ के बीच तार्किक संबंध बनता है।
Python में इनहेरिटेंस के उपयोग को दिखाने के लिए, आइए एक चिड़ियाघर का उदाहरण लेते हैं। एक चिड़ियाघर में कुत्ते, बिल्ली और पक्षी जैसे विभिन्न जानवर होते हैं। हालांकि इन जानवरों के अपने विशिष्ट व्यवहार हैं, वे कुछ सामान्य विशेषताएं भी साझा करते हैं। ऐसे में, इनहेरिटेंस हमें कोड के दोहराव से बचने और कोड को अधिक संगठित रखने में मदद करती है। आइए देखें कैसे:
class Animal: # बेस क्लास Animal को परिभाषित करना
def __init__(self, name, age): # कंस्ट्रक्टर मेथड जिसमें name और age पैरामीटर हैं
self.name = name # name एट्रिब्यूट असाइन करना
self.age = age # age एट्रिब्यूट असाइन करना
def eat(self): # सामान्य मेथड eat
return f'{self.name} is eating.'
def make_sound(self): # सामान्य मेथड make_sound
return f'{self.name} makes a sound.'
class Dog(Animal): # Animal से इनहेरिट करने वाली Dog क्लास
def make_sound(self): # make_sound मेथड को ओवरराइड करना
return f'{self.name} barks.'
class Cat(Animal): # Animal से इनहेरिट करने वाली Cat क्लास
def make_sound(self): # make_sound मेथड को ओवरराइड करना
return f'{self.name} meows.'
class Bird(Animal): # Animal से इनहेरिट करने वाली Bird क्लास
def eat(self): # eat मेथड को Bird के लिए ओवरराइड करना
return f'{self.name} is pecking at its food.'
def make_sound(self): # make_sound मेथड को ओवरराइड करना
return f'{self.name} chirps.'
# __init__ मेथड Animal से इनहेरिट होता है
# लेकिन आप किसी भी इनहेरिटेड क्लास के लिए __init__ भी परिभाषित कर सकते हैं
dog = Dog('Rex', 5) # Dog का एक उदाहरण बनाना
cat = Cat('Whiskers', 3) # Cat का एक उदाहरण बनाना
bird = Bird('Tweety', 2) # Bird का एक उदाहरण बनाना
for animal in [dog, cat, bird]: # उदाहरणों पर इटरेशन करना
print(animal.eat()) # इनहेरिटेड या ओवरराइड किए गए eat मेथड को कॉल करना
print(animal.make_sound()) # ओवरराइड किए गए make_sound मेथड को कॉल करना
print('-----')
आउटपुट होगा:
Rex is eating.
Rex barks.
-----
Whiskers is eating.
Whiskers meows.
-----
Tweety is pecking at its food.
Tweety chirps.
-----
उपर्युक्त कोड में, Animal पैरेंट क्लास है, जबकि Dog, Cat, और Bird चाइल्ड क्लासेज़ हैं। चाइल्ड क्लासेज़ Animal क्लास से सभी मेथड्स को इनहेरिट करती हैं। हालांकि, प्रत्येक चाइल्ड क्लास make_sound मेथड को ओवरराइड करती है क्योंकि प्रत्येक जानवर की आवाज़ अलग होती है। हम Bird क्लास में eat मेथड को भी ओवरराइड करते हैं क्योंकि पक्षी का खाने का तरीका Animal क्लास में परिभाषित सामान्य खाने के व्यवहार से अलग होता है।
यह तरीका हमें वास्तविक दुनिया के ऑब्जेक्ट्स और उनके संबंधों को अधिक प्रभावी ढंग से प्रदर्शित करने में मदद करता है, जिससे कोडबेस साफ़, संक्षिप्त और सुगम्य होता है। इस प्रकार, इनहेरिटेंस हमें कोड के पुन: उपयोग और जटिलता को घटाने के फायदे देता है।
चुनौती: Person और Employee क्लासेज़
आपसे दो क्लासेज़ Person और Employee बनाने को कहा गया है।
Person क्लास में निम्नलिखित गुण होने चाहिए:
name: व्यक्ति के नाम का प्रतिनिधित्व करने वाली एक स्ट्रिंग।
age: व्यक्ति की आयु का प्रतिनिधित्व करने वाला एक पूर्णांक।
Person क्लास में निम्नलिखित मेथड भी होना चाहिए:
introduce_yourself(): यह मेथड निम्नलिखित प्रारूप में एक स्ट्रिंग प्रिंट करता है: "My name is {name} and I am {age} years old."
Employee क्लास को Person क्लास से इनहेरिट करना चाहिए और निम्नलिखित गुण जोड़ना चाहिए:
job_title: व्यक्ति के नौकरी के शीर्षक का प्रतिनिधित्व करने वाली एक स्ट्रिंग।
Employee क्लास को निम्नलिखित मेथड को भी ओवरराइड करना चाहिए:
introduce_yourself(): यह मेथड निम्नलिखित प्रारूप में एक स्ट्रिंग प्रिंट करता है: "My name is {name}, I am {age} years old, and my job title is {job_title}."