目次
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() # "इन्जिन सुरु भयो।" देखाइन्छ
यसरी, उत्तराधिकार प्रयोग नगरी कार्यक्षमता वर्गहरूबीच बाँड्ने तरिका संयोजन हो। आवश्यक कार्यक्षमता मात्र प्रदान गरेर, कोड अधिक लचिलो र व्यवस्थापन गर्न सजिलो हुन्छ।