Python इनहेरिटेन्स गाइड | एकल, ओभरराइड, बहु‑इनहेरिटेन्स

1. Python इनहेरिटेन्सको सारांश

Pythonमा इनहेरिटेन्स भनेको अभिभावक वर्गबाट सन्तान वर्गले कार्यक्षमता र गुणहरू प्राप्त गर्ने प्रक्रिया हो। यसले कोडको पुन: प्रयोग क्षमता बढाउँछ र मर्मतसम्भारको दक्षता सुधार्छ। वस्तु-उन्मुख प्रोग्रामिङ (OOP) को एक महत्वपूर्ण अवधारणा हो, विशेष गरी ठूला प्रणाली विकास र दीर्घकालीन परियोजनाहरूमा उपयोगी हुन्छ।

इनहेरिटेन्सको मूलभूत भूमिका

  • कोडको पुन: प्रयोग क्षमता: एक पटक लेखिएको वर्गको कार्यक्षमता अन्य वर्गहरूमा पनि प्रयोग गर्न सकिन्छ, जसले दोहोरिएको कोडलाई टाढा राख्न मद्दत गर्छ।
  • मर्मतसम्भारको सजिलोपन: अभिभावक वर्गको परिवर्तन सन्तान वर्गमा स्वचालित रूपमा प्रतिबिम्बित हुन्छ, जसले सुधार र कार्यक्षमता विस्तारलाई प्रभावकारी बनाउँछ।
class ParentClass:
    def greet(self):
        print("नमस्ते, यो अभिभावक वर्ग हो।")

class ChildClass(ParentClass):
    def greet(self):
        print("नमस्ते, यो सन्तान वर्ग हो।")
यस उदाहरणमा, ChildClass ले ParentClass को मेथडलाई ओभरराइट गरिरहेको छ। greet मेथड ओभरराइड भएको कारण, सन्तान वर्गमा आफ्नै अभिवादन देखाइन्छ।

2. Python मा एकल उत्तराधिकार

एकल उत्तराधिकार भनेको, एउटा अभिभावक वर्गबाट एउटा सन्तान वर्गले कार्यहरू उत्तराधिकार गर्ने रूप हो। यो Python को उत्तराधिकारको आधारभूत रूप हो, जसले कोडलाई सरल राख्दै विस्तारयोग्य बनाउँछ।

एकल उत्तराधिकारको आधारभूत वाक्यरचना र उदाहरण

class Car:
    def __init__(self, brand, color):
        self.brand = brand
        self.color = color

    def describe(self):
        print(f"यो कार {self.color} रंगको {self.brand} हो।")

class ElectricCar(Car):
    def __init__(self, brand, color, battery_size):
        super().__init__(brand, color)
        self.battery_size = battery_size

    def describe_battery(self):
        print(f"ब्याट्री क्षमता {self.battery_size}kWh हो।")
यस उदाहरणमा, ElectricCar वर्गले Car वर्गको कार्यलाई उत्तराधिकार गर्दै, ब्याट्री क्षमताको व्याख्या कार्य थपेको छ। super() प्रयोग गरेर अभिभावक वर्गको कन्स्ट्रक्टरलाई कल गरी, साझा गुणहरू (ब्राण्ड र रंग) लाई आरम्भ गरिन्छ।
侍エンジニア塾

3. मेथड ओभरराइड

ओभरराइड भनेको, सन्तान वर्गले अभिभावक वर्गको मेथडलाई नयाँ गरी परिभाषित गर्ने सुविधा हो। यसले अभिभावक वर्गको मेथडलाई प्रयोग गर्दै सन्तान वर्गको व्यवहारलाई परिवर्तन गर्न सम्भव बनाउँछ।

ओभरराइडको उदाहरण

class Animal:
    def speak(self):
        print("जनावरको आवाज")

class Dog(Animal):
    def speak(self):
        print("भौं भौं!")
यस उदाहरणमा, Dog वर्गले Animal वर्गको speak मेथडलाई ओभरराइड गरेको छ। यसले गर्दा, Dog वर्गको इन्स्ट्यान्समा “भौं भौं” आउटपुट हुन्छ, तर Animal वर्गको इन्स्ट्यान्समा “जनावरको आवाज” देखाइन्छ।

4. बहु उत्तराधिकार

बहु उत्तराधिकारमा, एउटा सन्तान वर्गले धेरै अभिभावक वर्गहरूबाट उत्तराधिकार गर्न सक्छ। यसले विभिन्न वर्गहरूको कार्यक्षमता एउटा वर्गमा एकीकृत गर्न सकिन्छ, तर कार्यान्वयन जटिल हुन सक्छ, त्यसैले सावधानी आवश्यक छ।

बहु उत्तराधिकारको उदाहरण र ध्यान दिनुपर्ने बुँदाहरू

class A:
    def greet(self):
        print("A को अभिवादन")

class B:
    def greet(self):
        print("B को अभिवादन")

class C(A, B):
    pass

c = C()
c.greet()  # "A को अभिवादन" देखाइन्छ(MRO अनुसार पहिलो वर्गलाई प्राथमिकता दिइन्छ)
PythonमाMRO(Method Resolution Order) द्वारा, कुन अभिभावक वर्गको मेथड कल गरिनेछ भन्ने निर्धारण हुन्छ। यो क्रम जाँच्नको लागि, C.mro() प्रयोग गर्नुहोस्। बहु उत्तराधिकार शक्तिशाली छ, तर अभिभावक वर्गहरूबीचको टकराव र मेथडको क्रमलाई ध्यानमा राखेर प्रयोग गर्न आवश्यक छ।
年収訴求

5. इनहेरिटेन्स प्रयोग गरेर व्यावहारिक उदाहरण

इनहेरिटेन्सले दैनिक प्रोग्रामिङमा पनि धेरै उपयोगी परिस्थितिहरू प्रदान गर्दछ। उदाहरणका लागि, कम्पनीको कर्मचारी व्यवस्थापन प्रणालीमा, आधारभूत कर्मचारी वर्गबाट विशिष्ट पदको वर्गलाई इनहेरिट गरेर, कोडको पुन: प्रयोग र विस्तार सम्भव हुन्छ।

व्यावहारिक कर्मचारी व्यवस्थापन प्रणालीको उदाहरण

class Employee:
    def __init__(self, first, last, pay):
        self.first = first
        self.last = last
        self.pay = pay

    def fullname(self):
        return f'{self.first} {self.last}'

class Manager(Employee):
    def __init__(self, first, last, pay, employees=None):
        super().__init__(first, last, pay)
        self.employees = employees if employees is not None else []

    def add_employee(self, employee):
        if employee not in self.employees:
            self.employees.append(employee)

    def print_employees(self):
        for emp in self.employees:
            print(emp.fullname())
यस उदाहरणमा, Manager वर्गले Employee वर्गलाई इनहेरिट गरी, कर्मचारी व्यवस्थापन कार्यक्षमता थपेको छ। अभिभावक वर्गको सामान्य कार्यक्षमता कायम राख्दै, विशिष्ट पद अनुसारको कार्यक्षमता विस्तार गरिएको छ।

6. उत्तराधिकारको सर्वोत्तम अभ्यास र संयोजनको तुलना

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

संयोजनको उदाहरण

संयोजन भनेको, एउटा वर्गले अर्को वर्गलाई अंश (इन्स्ट्यान्स) को रूपमा राख्ने द्वारा कार्यक्षमता सुम्पने डिजाइन ढाँचा हो।
class Engine:
    def start(self):
        print("इन्जिन सुरु भयो।")

class Car:
    def __init__(self, engine):
        self.engine = engine

    def start(self):
        self.engine.start()

engine = Engine()
car = Car(engine)
car.start()  # "इन्जिन सुरु भयो।" देखाइन्छ
यसरी, उत्तराधिकार प्रयोग नगरी कार्यक्षमता वर्गहरूबीच बाँड्ने तरिका संयोजन हो। आवश्यक कार्यक्षमता मात्र प्रदान गरेर, कोड अधिक लचिलो र व्यवस्थापन गर्न सजिलो हुन्छ।

7. सारांश

Python को इनहेरिटेन्स कोडको पुन: प्रयोग र विस्तारशीलता बढाउनको लागि एक शक्तिशाली उपकरण हो। एकल इनहेरिटेन्स, बहु इनहेरिटेन्स, ओभरराइड जस्ता प्रविधिहरूलाई बुझेर, तपाईंले प्रभावकारी र मर्मतयोग्य कार्यक्रमहरू निर्माण गर्न सक्नुहुन्छ। अर्कोतर्फ, कम्पोजिसनसँगको प्रयोगलाई फरक पार्न विचार गरी, उपयुक्त रूपमा डिजाइन गर्नु महत्त्वपूर्ण छ। उपयुक्त इनहेरिटेन्सलाई कुशलतापूर्वक प्रयोग गरेर, लचिलो र बलियो कोड बेस निर्माण गर्न सकिन्छ।