Python OOPs: क्लास, ऑब्जेक्ट, इनहेरिटेंस और कंस्ट्रक्टर

⚡ स्मार्ट सारांश

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में Python यह कोड को क्लास और ऑब्जेक्ट के इर्द-गिर्द व्यवस्थित करता है, संबंधित डेटा और व्यवहार को एक साथ बंडल करता है। यह दृष्टिकोण दिखाता है कि क्लास को कैसे परिभाषित किया जाए, ऑब्जेक्ट कैसे बनाए जाएं, इनहेरिटेंस कैसे लागू किया जाए और कंस्ट्रक्टर के साथ एट्रिब्यूट को कैसे इनिशियलाइज़ किया जाए।

  • 🔘 कक्षा का खाका: एक क्लास संबंधित डेटा और विधियों को ऑब्जेक्ट बनाने के लिए एक पुन: प्रयोज्य ब्लूप्रिंट में समूहित करती है।
  • वस्तुओं: ऑब्जेक्ट किसी क्लास के इंस्टेंस होते हैं, जिनमें से प्रत्येक अपने स्वयं के एट्रिब्यूट मानों को संग्रहीत करता है।
  • क्लासों को परिभाषित करना: क्लास कीवर्ड, इंडेंटेड मेथड्स और सेल्फ पैरामीटर एक को परिभाषित करते हैं Python वर्ग.
  • 🧬 विरासत: एक व्युत्पन्न वर्ग आधार वर्ग से विशेषताएँ और विधियाँ विरासत में प्राप्त करता है और बहु-विरासत का समर्थन करता है।
  • कंस्ट्रक्टर्स: __init__() विधि प्रत्येक नए ऑब्जेक्ट को पूर्वनिर्धारित मानों के साथ आरंभ करती है।
  • 🤖 एआई की प्रासंगिकता: Py जैसी मशीन लर्निंग लाइब्रेरीTorch मॉडल परतें और नेटवर्क के रूप में Python कक्षाएं।

Python OOPs: क्लास, ऑब्जेक्ट, इनहेरिटेंस और कंस्ट्रक्टर

OOPs में Python

OOPs में Python यह एक प्रोग्रामिंग दृष्टिकोण है जो अन्य सामान्य प्रोग्रामिंग भाषाओं की तरह ही ऑब्जेक्ट्स और क्लासेस का उपयोग करने पर ध्यान केंद्रित करता है। ऑब्जेक्ट्स कोई भी वास्तविक दुनिया की इकाई हो सकती है। Python डेवलपर्स को कोड पुनः प्रयोज्यता पर प्रमुख ध्यान देने के साथ OOPs दृष्टिकोण का उपयोग करके एप्लिकेशन विकसित करने की अनुमति देता है। इसमें क्लास और ऑब्जेक्ट बनाना बहुत आसान है Python.

क्लास क्या है?

एक कक्षा में Python यह एक तार्किक समूह हैping डेटा और फ़ंक्शन का। यह डेटा संरचनाएं बनाने की स्वतंत्रता देता है जिनमें मनमाना कंटेंट हो सकता है और इसलिए वे आसानी से सुलभ होती हैं।

उदाहरण के लिए, कोई भी बैंक कर्मचारी जो ग्राहक का विवरण ऑनलाइन प्राप्त करना चाहता है, उसे जाना होगा ग्राहक वर्गजहां लेनदेन विवरण, निकासी और जमा विवरण, बकाया ऋण आदि जैसी सभी विशेषताओं को सूचीबद्ध किया जाएगा।

कैसे परिभाषित करें Python कक्षाएं

वर्ग को परिभाषित करने के लिए आपको निम्नलिखित बिंदुओं पर विचार करना होगा

चरण 1) In Python, वर्गों को द्वारा परिभाषित किया जाता है "कक्षा" कीवर्ड

class myClass():

चरण 2) क्लास के अंदर, आप ऐसे फ़ंक्शन या विधियाँ परिभाषित कर सकते हैं जो इस क्लास का हिस्सा हैं

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • यहां हमने method1 को परिभाषित किया है जो “ प्रिंट करता हैGuru99। "
  • हमने जो दूसरा तरीका परिभाषित किया है वह है method2 जो “Software Testing”+ SomeString प्रिंट करता है। SomeString कॉलिंग विधि द्वारा दिया गया वेरिएबल है

चरण 3) क्लास में सब कुछ इंडेंटेड होता है, जैसे कि फंक्शन, लूप, if स्टेटमेंट आदि में कोड। जो कुछ भी इंडेंटेड नहीं है, वह क्लास में नहीं है।

परिभाषित करें Python कक्षाएं

ध्यान दें: में “स्वयं” का उपयोग करने के बारे में Python

  • स्वयं तर्क का तात्पर्य वस्तु से ही है। इसीलिए 'स्वयं' शब्द का प्रयोग किया गया है। अतः इस विधि में, 'स्वयं' उस वस्तु के विशिष्ट उदाहरण को संदर्भित करेगा जिस पर क्रिया की जा रही है।
  • स्वयं वह नाम है जिसे परम्परागत रूप से पसंद किया जाता है Pythons उदाहरण विधियों के पहले पैरामीटर को इंगित करने के लिए Python। यह का हिस्सा है Python ऑब्जेक्ट के सदस्यों तक पहुंचने के लिए सिंटैक्स

चरण 4) क्लास का ऑब्जेक्ट बनाने के लिए

c = myClass()

चरण 5) किसी क्लास में विधि को कॉल करने के लिए

c.method1()
    c.method2(" Testing is fun")
  • ध्यान दें कि जब हम method1 या method2 को कॉल करते हैं, तो हमें self-कीवर्ड प्रदान करने की आवश्यकता नहीं होती है। यह हमारे लिए स्वचालित रूप से संभाला जाता है। Python रनटाइम।
  • Python जब आप किसी इंस्टेंस पर इंस्टेंस विधि को कॉल करेंगे तो रनटाइम "स्वयं" मान पास करेगा, चाहे आप इसे जानबूझकर प्रदान करें या नहीं
  • आपको बस गैर-आत्म तर्कों की परवाह करनी है

चरण 6) यहाँ पूरा कोड है

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  def method2(self,someString):    
      print("Software Testing:" + someString)
  
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()

उत्तराधिकार कैसे काम करता है

इनहेरिटेंस एक ऐसी सुविधा है जिसका उपयोग ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में किया जाता है; इसका मतलब है कि किसी मौजूदा क्लास में कम या बिना किसी संशोधन के एक नया क्लास परिभाषित करना। नए क्लास को कहा जाता है व्युत्पन्न वर्ग और जिससे यह विरासत में मिलता है उसे कहा जाता है आधार. Python विरासत का समर्थन करता है; यह भी समर्थन करता है एकाधिक विरासतएक वर्ग किसी अन्य वर्ग से विशेषताओं और व्यवहार विधियों को विरासत में प्राप्त कर सकता है जिसे उपवर्ग या उत्तराधिकारी वर्ग कहा जाता है।

विरासत कैसे काम करती है Python

Python वंशानुक्रम वाक्यविन्यास

class DerivedClass(BaseClass):
    body_of_derived_class

चरण 1) निम्नलिखित कोड चलाएँ

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print ("childClass Method1")
        
  def method2(self):
        print("childClass method2")     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

ध्यान दें कि childClass में method1 परिभाषित नहीं है, लेकिन यह पैरेंट myClass से व्युत्पन्न है। आउटपुट है “Guru99। "

चरण 2) पंक्ति # 8 और 10 की टिप्पणी हटाएं। कोड चलाएं

अब, childClass में विधि 1 को परिभाषित किया गया है और आउटपुट “childClass Method1” सही ढंग से दिखाया गया है।

चरण 3) लाइन #9 पर टिप्पणी हटाएं। कोड चलाएं

आप सिंटैक्स का उपयोग करके पैरेंट क्लास की विधि को कॉल कर सकते हैं

ParentClassName.MethodName(self)

हमारे मामले में, हम myClass.method1(self) को कॉल करते हैं और Guru99 उम्मीद के मुताबिक प्रिंट हुआ है।

चरण 4) लाइन #19 की टिप्पणी हटाएँ। कोड चलाएँ।

चाइल्ड क्लास की विधि 2 को कॉल किया जाता है और "childClass method2" को अपेक्षानुसार प्रिंट किया जाता है।

Python कंस्ट्रक्टर्स

कंस्ट्रक्टर एक क्लास फ़ंक्शन है जो किसी ऑब्जेक्ट को पूर्वनिर्धारित मानों पर इंस्टैंसिएट करता है।

यह डबल अंडरस्कोर (_) से शुरू होता है। यह __init__() विधि है।

नीचे दिए गए उदाहरण में हम कन्स्ट्रक्टर का उपयोग करके उपयोगकर्ता का नाम ले रहे हैं।

class User:
    name = ""

    def __init__(self, name):
        self.name = name

    def sayHello(self):
        print("Welcome to Guru99, " + self.name)

User1 = User("Alex")
User1.sayHello()

आउटपुट होगा:

स्वागत है आपका Guru99, एलेक्स

Python 2 उदाहरण

उपरोक्त कोड हैं Python 3 उदाहरण, यदि आप भागना चाहते हैं Python 2 कृपया निम्नलिखित कोड पर विचार करें।

# How to define Python classes
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
  def method2(self,someString):    
      print "Software Testing:" + someString
      
   
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()


#How Inheritance works
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
      
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print "childClass Method1" 
        
  def method2(self):
        print "childClass method2"     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

हमारे अगले ट्यूटोरियल के बारे में जानें बहुरूपता Python

अक्सर पूछे जाने वाले प्रश्न

क्लास एक ब्लूप्रिंट है जो विशेषताओं और विधियों को परिभाषित करता है, जबकि ऑब्जेक्ट उस क्लास से निर्मित एक ठोस उदाहरण है। एक क्लास कई ऑब्जेक्ट बना सकती है, जिनमें से प्रत्येक का अपना महत्व होता है।ping इसका अपना डेटा।

Python ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग चार स्तंभों पर आधारित है: एनकैप्सुलेशन (डेटा को विधियों के साथ बंडल करना), एब्सोल्यूटेशन ... और ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग।tracजटिलता को छुपाना (इंटीग्रेशन), वंशानुक्रम (एक बेस क्लास का पुन: उपयोग करना), और बहुरूपता (एक इंटरफ़ेस, कई रूप)।

क्लास वेरिएबल्स को क्लास बॉडी के अंदर घोषित किया जाता है और प्रत्येक इंस्टेंस द्वारा साझा किया जाता है। इंस्टेंस वेरिएबल्स को __init__ फ़ंक्शन के अंदर self का उपयोग करके असाइन किया जाता है और वे केवल एक ही ऑब्जेक्ट से संबंधित होते हैं।

super() फ़ंक्शन पैरेंट क्लास का प्रॉक्सी लौटाता है, जिससे चाइल्ड क्लास पैरेंट क्लास के मेथड्स या कंस्ट्रक्टर को सीधे नाम लिए बिना ही कॉल कर सकती है। इनहेरिटेड एट्रीब्यूट्स को इनिशियलाइज़ करने के लिए इसे अक्सर super().__init__() के रूप में लिखा जाता है।

एनकैप्सुलेशन किसी ऑब्जेक्ट के आंतरिक डेटा तक सीधी पहुंच को प्रतिबंधित करता है। Pythonकिसी एट्रिब्यूट को सुरक्षित रखने के लिए उसके आगे एक अंडरस्कोर (_name) लगाएं, या नाम बदलने के लिए दो अंडरस्कोर (__name) लगाएं।

हाँ। ए Python एक क्लास कई पेरेंट्स से इनहेरिट कर सकती है, जैसे कि क्लास चाइल्ड (ए, बी)। Python यह विधि समाधान आदेश (एमआरओ) का उपयोग करके डुप्लिकेट विधि नामों को हल करता है, जिसकी जांच mro() विधि से की जाती है।

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग कृत्रिम बुद्धिमत्ता और मशीन लर्निंग फ्रेमवर्क के लिए केंद्रीय महत्व रखती है। Py जैसी लाइब्रेरीज़ इसका उपयोग करती हैं।Torch और scikit-learn मॉडल नेटवर्क, लेयर्स और एस्टीमेटर्स को क्लास के रूप में उपयोग करते हैं, इसलिए आप उन्हें सबक्लास करके मॉडल बनाने के लिए उनका पुन: उपयोग कर सकते हैं।

हाँ। GitHub Copilot और AI सहायक उत्पन्न करते हैं। Python क्लास, कंस्ट्रक्टर और इनहेरिटेंस को एक छोटे से प्रॉम्प्ट से स्वचालित किया जा सकता है। ये दोहराव वाले कोड को स्वचालित करते हैं, हालांकि आपको सही लॉजिक के लिए आउटपुट की समीक्षा करनी चाहिए।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: