कंप्लीट पाइथन सीरीज - OOP पार्ट टू

Jul 18, 2024

कंप्लीट पाइथन सीरीज - OOP पार्ट टू

परिचय

  • सीरीज: कंप्लीट पाइथन
  • फोकस: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) पार्ट 2
  • मुख्य विषय: इन्हेरिटेंस, पॉलीमोर्फिज्म, प्राइवेट एट्रिब्यूट्स इत्यादि
  • उपलब्धता: सभी नोट्स और स्लाइड्स डिस्क्रिप्शन में

del कीवर्ड

  • उपयोग: ऑब्जेक्ट की प्रॉपर्टीज या पूरा ऑब्जेक्ट डिलीट करने के लिए
  • सिंटैक्स: del object.property या del object
  • उदाहरण:
    class Student:
        def __init__(self, name):
            self.name = name
    s1 = Student("Shraddha")
    del s1
    
    • परिणाम: ऑब्जेक्ट डिलीट करते ही s1 को एक्सेस करने पर एरर मिलेगा

प्राइवेट एट्रिब्यूट्स

  • पब्लिक और प्राइवेट एट्रिब्यूट्स का फर्क
  • प्राइवेट एट्रिब्यूट्स: फाइल करें __attribute
  • उद्देश्य: संवेदनशील जानकारी को प्रोटेक्ट करना
  • उदाहरण:
    class Account:
        def __init__(self, account_number, password):
            self.__account_number = account_number
            self.__password = password
    
    • परिणाम: __account_number और __password क्लास के बाहर से एक्सेस नहीं किए जा सकते

इनहेरिटेंस

  • उद्देश्य: एक क्लास की प्रॉपर्टीज दूसरी क्लास में यूज़ करना
  • सिंटैक्स: class DerivedClass(BaseClass):
  • उदाहरण:
    class Car:
        def start(self):
            print("Car started")
        def stop(self):
            print("Car stopped")
    class ToyotaCar(Car):
        pass
    
    • परिणाम: ToyotaCar ने Car की प्रॉपर्टीज इनहेरिट की

इनहेरिटेंस के प्रकार

  1. सिंगल इनहेरिटेंस: एक बेस क्लास और एक डेरिव क्लास
  2. मल्टीलेवल इनहेरिटेंस: एक बेस क्लास, एक इंटरमीडिएट क्लास, और एक डेरिव क्लास
  3. मल्टीपल इनहेरिटेंस: एक डेरिव क्लास जो मल्टीपल बेस क्लासेज से इनहेरिट करती है
  4. हाइब्रिड इनहेरिटेंस: मल्टीपल इनहेरिटेंस के प्रकारों का कॉम्बिनेशन

सुपर मेथड

  • उपयोग: पेरेंट क्लास का कंस्ट्रक्टर या अन्य मेथड को कॉल करने के लिए
  • उदाहरण:
    class Car:
        def __init__(self, car_type):
            self.car_type = car_type
    class ToyotaCar(Car):
        def __init__(self, car_type, model):
            super().__init__(car_type)
            self.model = model
    
    • परिणाम: ToyotaCar में पेरेंट क्लास के __init__ को कॉल किया गया

क्लास मेथड

  • उपयोग: क्लास लेवल पर परिवर्तन करना
  • सिंटैक्स: @classmethod
  • उदाहरण:
    class MyClass:
        class_variable = 0
        @classmethod
        def increment(cls):
            cls.class_variable += 1
    
    • परिणाम: increment क्लास वैरिएबल को बढ़ाएगा

प्रॉपर्टी डेकोरेटर

  • उद्देश्य: एक मेथड को प्रॉपर्टी में बदलना
  • सिंटैक्स: @property
  • उदाहरण:
    class Student:
        def __init__(self, marks):
            self._marks = marks
        @property
        def percentage(self):
            return (self._marks / 100) * 100
    
    • परिणाम: percentage प्रॉपर्टी की तरह यूज हो सकती है

पॉलीमोर्फिज्म और ऑपरेटर ओवरलोडिंग

  • उद्देश्य: एक ही ऑपरेटर या मेथड का विभिन्न प्रकारों से उपयोग
  • उदाहरण:
    • प्लस ऑपरेटर:
      • स्ट्रिंग्स के लिए: कॉनकैटिनेशन
      • इंटीजर के लिए: ऐडिशन
    print(1 + 2)  # 3
    print("a" + "b")  # ab
    

कस्टम ऑपरेटर ओवरलोडिंग

  • सिंटैक्स: __add__, __sub__ आदि मेथड्स की डिफ़िनिशन
  • उदाहरण:
    class Complex:
        def __init__(self, real, imag):
            self.real = real
            self.imag = imag
        def __add__(self, other):
            return Complex(self.real + other.real, self.imag + other.imag)
    c1 = Complex(1, 2)
    c2 = Complex(2, 3)
    c3 = c1 + c2
    
    • परिणाम: c3 एक नया Complex नंबर होगा

निष्कर्ष

  • हमने OOP के मुख्य चार पिलर्स को कवर किया: एब्स्ट्रैक्शन, इनकैप्सुलेशन, इनहेरिटेंस, और पॉलीमोर्फिज्म
  • पाइथन में OOP का प्रयोग बड़े प्रोजेक्ट्स में महत्वपूर्ण है
  • इंटरव्यूज़ के लिए ये सभी कांसेप्ट्स खासतौर पर उपयोगी
  • प्रैक्टिस क्वेश्चंस और कुछ क्लासेस को डिफ़ाइन किया: सर्कल, एंप्लॉई, ऑर्डर

अगले स्टेप्स

  • सभी नोट्स और स्लाइड्स डाउनलोड करें
  • अगले लेक्चर में प्रोजेक्ट ओरिएंटेड इम्प्लीमेंटेशन पर फ़ोकस करेंगे
  • लगातार प्रैक्टिस करते रहें