पाइथन मूल बातें: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP)
विरासत का परिचय
Lesson 3 of 7 • 10 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
Inheritance ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) के मुख्य अवधारणाओं में से एक है।
यह एक क्लास (जिसे child या subclass कहा जाता है) को दूसरी क्लास (जिसे parent या superclass कहा जाता है) के attributes और methods वारिस में लेने की अनुमति देता है।
इसका मतलब है कि आप एक बेस क्लास में सामान्य व्यवहार और डेटा परिभाषित कर सकते हैं, फिर अधिक विशिष्ट क्लास बना सकते हैं जो उस कार्यक्षमता को फिर से उपयोग करें और अनुकूलित करें — बिना एक ही कोड को दोहराए।
वंशानुक्रम के लिए मूल सिंटैक्स
Python में, inheritance उस पैरेंट क्लास के नाम को बच्चे के क्लास नाम के बाद कोष्ठकों में निर्दिष्ट करके लागू किया जाता है।
class ParentClass:
# पैरेंट क्लास के attributes और methods
class ChildClass(ParentClass):
# बच्चे क्लास के attributes और methods
जब एक ChildClass किसी ParentClass से वारिस होती है, तो वह प्राप्त करती है:
- पैरेंट के सभी attributes (ऑब्जेक्ट से जुड़ी वैरिएबल)
- पैरेंट के सभी methods (ऑब्जेक्ट से जुड़ी फंक्शन)
- पैरेंट क्लास के किसी भी constructor (
__init__) को
उदाहरण: जानवर और उनकी आवाजें
आइए inheritance को जीवन में लाते हैं कुछ ऐसा जिसके साथ हम सभी जुड़ सकते हैं — जानवर।
हम एक सामान्य Animal क्लास से शुरू करेंगे जो बताता है कि सभी जानवरों में क्या समानताएं हैं, फिर हम विशिष्ट जानवरों के प्रकार बनाएंगे (Dog और Cat) जो उन गुणों को साझा करते हैं लेकिन अलग-अलग आवाज़ें करते हैं।
यहाँ बेस क्लास है:
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def sound(self):
pass # हम हर जानवर को अपनी खास आवाज़ तय करने देंगे
Animal क्लास में है:
- एक
__init__मेथड जो हर जानवर के लिएnameऔरageसेट करता है। - एक
sound()मेथड जो अभी कुछ नहीं करता (passसिर्फ एक प्लेसहोल्डर है)। हम इसे हर जानवर के प्रकार में उनकी आवाज़ से रिप्लेस करेंगे।
अब दो विशिष्ट जानवर क्लास बनाते हैं:
class Dog(Animal):
def sound(self):
print("Woof woof!")
class Cat(Animal):
def sound(self):
print("Meow!")
यहाँ क्या हो रहा है:
- दोनों
DogऔरCatAnimalसे inherit करते हैं, इसलिए वेnameऔरageattributes अपने आप पा लेते हैं बिना हमें उस कोड को दोहराने की जरूरत। - हर एक ने
sound()मेथड को override किया ताकि वे अपनी अलग आवाज़ निकाल सकें।
ऑब्जेक्ट बनाना और उपयोग करना
dog = Dog("Rex", 2)
cat = Cat("Mimi", 3)
print(dog.name) # Rex
dog.sound() # Woof woof!
print(cat.name) # Mimi
cat.sound() # Meow!
जब हम Dog("Rex", 2) बनाते हैं, तो यह चरण-दर-चरण होता है:
- Python
__init__मेथड कोAnimalसे कॉल करता है (क्योंकिDogअपना खुद का__init__नहीं रखता)। - दिए गए
nameऔरageमान नए ऑब्जेक्ट में स्टोर हो जाते हैं। - जब हम
dog.sound()कॉल करते हैं, Python सबसे पहलेDogमेंsound()मेथड खोजता है। वह वह मेथड पाता है जो हमने लिखा है और उसे चलाता है — जो कि "Woof woof!" प्रिंट करता है।
यह लॉजिक Cat पर भी लागू होता है, लेकिन वह अपनी sound() मेथड चलाता है।
यह उदाहरण inheritance का जादू दिखाता है:
- हम सामान्य सेटअप (
__init__) केवल एक बारAnimalक्लास में लिखते हैं। - हर subclass (
Dog,Cat) साझा विशेषताएं रखता है और अपनी अनूठी व्यवहार जोड़ता है। - परिणामस्वरूप कम दोहराव वाला कोड, अधिक संगठित लॉजिक, और संबंधित ऑब्जेक्ट्स का आसान प्रबंधन होता है।
3. यह कैसे काम करता है
- साझा संरचना:
Animalका__init__मेथड तब चलता है जब आपDogयाCatऑब्जेक्ट बनाते हैं, क्योंकि वे इसे अपने आप वारिस में लेते हैं। - मेथड ओवरराइडिंग: दोनों
DogऔरCatके अपनेsound()मेथड होते हैं जोAnimalमें मौजूद प्लेसहोल्डर को बदल देते हैं। जब आपDogपरsound()कॉल करते हैं, PythonDogमेथड का उपयोग करता है,Animalका नहीं।
टिप: अगर कोई child class किसी मेथड को ओवरराइड नहीं करता, तो वह अपने parent class के मेथड का उपयोग अपने आप करता है।
वंशानुक्रम क्यों उपयोग करें?
Inheritance आपको यह करने देता है:
- साझा लॉजिक को एक बेस क्लास में रखने से कोड की पुनरावृत्ति से बचाएं।
- अपने कोड को अधिक मॉड्यूलर और पढ़ने योग्य बनाएं।
- एक सामान्य ब्लूप्रिंट से विशिष्ट क्लास बनाएं।
Inheritance में सोचने का उदाहरण:
Animal→name,age, औरsound()मेथड के साथ सामान्य ब्लूप्रिंट।Dog→ एक विशिष्ट प्रकार का जानवर अपनी अनूठी आवाज़ के साथ।Cat→ एक अलग प्रकार का जानवर अपनी अलग आवाज़ के साथ।
संक्षेप में
Inheritance OOP में एक शक्तिशाली उपकरण है जो क्लासेस का एक पदानुक्रम बनाता है, सामान्य अवधारणाओं से शुरू करके अधिक विशिष्ट तक बढ़ता है।
Python में, आप इसे लागू करते हैं:
- एक parent class लिखकर जिसमें सामान्य attributes और methods हों।
- child classes बनाकर जिनमें पैरेंट क्लास नाम को कोष्ठकों में सूचीबद्ध करें।
- आवश्यकतानुसार child classes में मेथड जोड़ें या ओवरराइड करें।
अगले पाठ में, हम इस अवधारणा को आगे बढ़ाएंगे और super() का पता लगाएंगे — जो child classes को उनके parent classes के व्यवहार को कॉल और बढ़ाने का तरीका देता है।