पायथन इनहेरिटेंस
पायथन इनहेरिटेंस
वंशानुक्रम हमें एक ऐसे वर्ग को परिभाषित करने की अनुमति देता है जो किसी अन्य वर्ग से सभी विधियों और गुणों को प्राप्त करता है।
मूल वर्ग वह वर्ग है जिससे विरासत में मिला है, जिसे आधार वर्ग भी कहा जाता है।
बाल वर्ग वह वर्ग है जो किसी अन्य वर्ग से प्राप्त होता है, जिसे व्युत्पन्न वर्ग भी कहा जाता है।
एक अभिभावक वर्ग बनाएं
कोई भी वर्ग मूल वर्ग हो सकता है, इसलिए सिंटैक्स किसी अन्य वर्ग को बनाने जैसा ही है:
उदाहरण
नाम की एक क्लास बनाएं Person
, with
firstname
और lastname
properties, और एक printname
मेथड:
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname,
self.lastname)
#Use the Person class to create an object, and then
execute the printname method:
x = Person("John", "Doe")
x.printname()
चाइल्ड क्लास बनाएं
एक वर्ग बनाने के लिए जो किसी अन्य वर्ग से कार्यक्षमता प्राप्त करता है, चाइल्ड क्लास बनाते समय पैरेंट क्लास को एक पैरामीटर के रूप में भेजें:
उदाहरण
नाम की एक क्लास बनाएं Student
, जो क्लास के गुणों और विधियों को इनहेरिट करेगी Person
:
class Student(Person):
pass
नोट: कीवर्ड का उपयोग तब करें pass
जब आप कक्षा में कोई अन्य गुण या विधियाँ नहीं जोड़ना चाहते हैं।
अब छात्र वर्ग में व्यक्ति वर्ग के समान गुण और विधियाँ हैं।
उदाहरण
ऑब्जेक्ट बनाने के लिए कक्षा का उपयोग करें , और फिर विधि Student
निष्पादित करें :printname
x = Student("Mike", "Olsen")
x.printname()
__init__() फ़ंक्शन जोड़ें
अब तक हमने एक चाइल्ड क्लास बनाया है जो अपने माता-पिता से गुण और विधियाँ प्राप्त करता है।
हम फ़ंक्शन को चाइल्ड क्लास ( कीवर्ड __init__()
के बजाय ) में जोड़ना चाहते हैं ।pass
नोट: जब __init__()
भी कोई नई वस्तु बनाने के लिए कक्षा का उपयोग किया जा रहा हो तो फ़ंक्शन को स्वचालित रूप से कॉल किया जाता है।
उदाहरण
__init__()
फ़ंक्शन को
Student
कक्षा में जोड़ें :
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
जब आप फ़ंक्शन जोड़ते हैं , तो चाइल्ड क्लास पैरेंट के फ़ंक्शन __init__()
को इनहेरिट नहीं करेगा ।__init__()
नोट: बच्चे का __init__()
कार्य माता-पिता के कार्य की विरासत को ओवरराइड
__init__()
करता है।
माता-पिता के कार्य की विरासत को बनाए रखने के लिए, माता-पिता के __init__()
कार्य में एक कॉल जोड़ें __init__()
:
उदाहरण
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
अब हमने __init__() फ़ंक्शन को सफलतापूर्वक जोड़ लिया है, और मूल वर्ग की विरासत को बनाए रखा है, और हम फ़ंक्शन में कार्यक्षमता जोड़ने के लिए तैयार हैं
__init__()
।
सुपर () फ़ंक्शन का उपयोग करें
पायथन में एक super()
फ़ंक्शन भी है जो बाल वर्ग को उसके माता-पिता से सभी विधियों और गुणों को विरासत में देगा:
उदाहरण
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
फ़ंक्शन का उपयोग करके super()
, आपको मूल तत्व के नाम का उपयोग करने की आवश्यकता नहीं है, यह स्वचालित रूप से अपने माता-पिता से विधियों और गुणों को प्राप्त करेगा।
गुण जोड़ें
उदाहरण
graduationyear
कक्षा में बुलाई गई
संपत्ति जोड़ें Student
:
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear
= 2019
नीचे दिए गए उदाहरण में, वर्ष 2019
एक चर होना चाहिए, और
Student
छात्र ऑब्जेक्ट बनाते समय कक्षा में पास होना चाहिए। ऐसा करने के लिए, __init__() फ़ंक्शन में एक और पैरामीटर जोड़ें:
उदाहरण
एक year
पैरामीटर जोड़ें, और ऑब्जेक्ट बनाते समय सही वर्ष पास करें:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
x = Student("Mike", "Olsen", 2019)
तरीके जोड़ें
उदाहरण
welcome
कक्षा में बुलाई गई
एक विधि जोड़ें Student
:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
def welcome(self):
print("Welcome",
self.firstname, self.lastname, "to the class of", self.graduationyear)
यदि आप चाइल्ड क्लास में पैरेंट क्लास में फंक्शन के समान नाम के साथ एक मेथड जोड़ते हैं, तो पैरेंट मेथड की इनहेरिटेंस ओवरराइड हो जाएगी।