Python बुनियादी बातें: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP)

Lesson 1 of 7 • 10 XP

Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का परिचय

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) एक प्रोग्रामिंग पैरेडाइम है जो आपको वास्तविक दुनिया की अवधारणाओं को ऑब्जेक्ट्स के रूप में प्रस्तुत करने देता है — ऐसी चीज़ें जिनके विशेष गुण (डेटा) और व्यवहार (क्रियाएँ) होते हैं।

एक ऑब्जेक्ट को अपने प्रोग्राम में एक स्व-निहित इकाई के रूप में सोचें जो डेटा और क्रियाओं को एक साथ बांधता है—जैसे आपका स्मार्टफोन: इसमें डेटा होता है (ब्रांड, मॉडल, बैटरी स्तर) और यह क्रियाएँ कर सकता है (फोटो लेना, कॉल करना, संगीत बजाना)। कोड में वह डेटा विशेषताओं (जैसे, battery_level) में रहता है, और क्रियाएँ मेथड्स (जैसे, take_photo()) होती हैं; ये मिलकर एक सुसंगत इकाई बनाते हैं जिसे आप बना सकते हैं, कॉन्फ़िगर कर सकते हैं, और उपयोग कर सकते हैं।

क्लास ब्लूप्रिंट होती है (फोन का डिज़ाइन), और ऑब्जेक्ट उस ब्लूप्रिंट से बना वास्तविक, व्यक्तिगत उदाहरण होता है (आपका खास फोन अपनी वर्तमान बैटरी और फ़ोटो के साथ)। प्रत्येक ऑब्जेक्ट अपनी स्थिति रखता है, इसलिए एक ही क्लास के दो ऑब्जेक्ट अलग-अलग मान साथ रख सकते हैं, और वे एक-दूसरे के मेथड्स को कॉल करके बातचीत करते हैं, बजाय आंतरिक डेटा को सीधे छेड़छाड़ करने के — इसे इनकैप्सुलेशन कहते हैं, जो कोड को व्यवस्थित रखने, बग्स कम करने, और व्यवहार को समझने में मदद करता है।

जब आप एक ऑब्जेक्ट बनाते हैं, तो Python आमतौर पर init चलाता है ताकि उसकी प्रारंभिक स्थिति सेट हो सके; उसके बाद, आप ऑब्जेक्ट से उसकी मेथड्स को कॉल करके चीजें करवा सकते हैं, जो ज़रूरत अनुसार उसकी विशेषताओं को पढ़ या अपडेट कर सकती हैं। अगर आपने कोई गेम बनाया है, तो कल्पना करें कि एक Player है जिसकी health और position है, जो move() और jump() कर सकता है; एक वेब ऐप में, एक User है जिसका name और password_hash होता है, जो authenticate() और update_profile() कर सकता है।

यही एक ऑब्जेक्ट होता है: डेटा + व्यवहार, साथ में रहता है, क्लास से बनाया गया और आपके काम के लिए तैयार।

Python में, सब कुछ एक ऑब्जेक्ट है। इसका मतलब है कि कोड ऑब्जेक्ट्स और उनकी बातचीत के इर्द-गिर्द लिखा जाता है, जो OOP को Python का मुख्य हिस्सा बनाता है, और यह Django, Flask, और कई गेम इंजन जैसे लोकप्रिय लाइब्रेरीज़ और फ्रेमवर्क्स की एक प्रमुख विशेषता है।

इस पाठ में, हम Python में OOP की मूल अवधारणाओं को समझेंगे और सीखेंगे कि कैसे अपने स्वयं के ऑब्जेक्ट्स बनाएं।


क्लासेस और ऑब्जेक्ट्स

Python में OOP क्लासेस और ऑब्जेक्ट्स के इर्द-गिर्द बना है:

  • एक क्लास किसी ऑब्जेक्ट के प्रकार के लिए ब्लूप्रिंट या परिभाषा है। यह बताता है कि उस प्रकार के ऑब्जेक्ट की कौन-सी विशेषताएं (attributes) और कौन-से व्यवहार (methods) होंगे।
  • एक ऑब्जेक्ट उस क्लास का इंस्टेंस होता है — यह ब्लूप्रिंट का वास्तविक संस्करण होता है, जिसके गुणों (attributes) में वास्तविक डेटा रखा जाता है।

1.1. क्लास बनाना

Python में क्लास बनाने के लिए class कीवर्ड का प्रयोग करें, उसके बाद क्लास का नाम और कोलन।

उदाहरण:

class Person:
    pass

यहाँ हमने एक Person नाम की क्लास बनाई है। pass स्टेटमेंट एक प्लेसहोल्डर है — यह Python को बताता है कि "यहाँ अभी कुछ न करें" जब तक हम असली कोड न डालें।

TIP: सामान्य तौर पर, क्लास नाम PascalCase में होते हैं (हर शब्द की पहली अक्षर बड़ी होती है)।

विशेषताएँ और मेथड्स

क्लास में हो सकते हैं:

  • विशेषताएँ — वेरिएबल्स जो ऑब्जेक्ट की जानकारी रखते हैं।
  • मेथड्स — फंक्शन्स जो ऑब्जेक्ट की क्रियाओं को परिभाषित करते हैं।

2.1. विशेषताएँ जोड़ना

ऑब्जेक्ट बनाते समय विशेषताएँ सेट करने के लिए, हम उन्हें एक विशेष मेथड __init__ (जिसे "डंडर init" कहा जाता है) के अंदर परिभाषित करते हैं।

__init__ क्लास से हर नए ऑब्जेक्ट के निर्माण पर अपने आप चलता है। यह ऑब्जेक्ट की विशेषताओं को प्रारंभिक मान देता है।

उदाहरण:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

यहाँ क्या हो रहा है:

  • पहला पैरामीटर self उस विशेष ऑब्जेक्ट का संदर्भ है जो बनाया जा रहा है।
  • बाकी पैरामीटर्स (name, age) वे मान हैं जो ऑब्जेक्ट बनाते समय दिए गए।
  • self.name और self.age इंस्टेंस विशेषताएँ हैं जो ऑब्जेक्ट के अंदर डेटा संग्रहीत करती हैं।

महत्वपूर्ण!: self हमेशा इंस्टेंस मेथड्स में पहला पैरामीटर होना चाहिए — यह आपको ऑब्जेक्ट की अपनी विशेषताओं और मेथड्स तक पहुँचने देता है।

2.2. मेथड्स जोड़ना

मेथड्स वे फंक्शंस होते हैं जो किसी क्लास से संबंधित होते हैं। वे आमतौर पर वे क्रियाएँ करते हैं जो ऑब्जेक्ट की विशेषताओं का उपयोग करते हैं या उन्हें बदलते हैं।

उदाहरण:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

यहाँ:

  • हमने greet नाम का एक मेथड जोड़ा है।
  • यह ऑब्जेक्ट की अपनी विशेषताओं (self.name और self.age) का उपयोग करते हुए एक व्यक्तिगत संदेश दिखाता है।

ऑब्जेक्ट बनाना और उपयोग करना

एक बार जब आप क्लास परिभाषित कर लेते हैं, तो आप उससे ऑब्जेक्ट बना सकते हैं, बिलकुल वैसे जैसे आप कोई फ़ंक्शन कॉल करते हैं — बस क्लास का नाम इस्तेमाल करें।

उदाहरण:

person1 = Person("Alice", 30)
person1.greet()

आउटपुट:

Hello, my name is Alice and I am 30 years old.

समापन

इस पाठ में आपने सीखा:

  • क्लासेस और ऑब्जेक्ट्स में क्या अंतर होता है।
  • ऑब्जेक्ट बनाने पर __init__ का उपयोग करके विशेषताएँ कैसे सेट करें।
  • ऐसे मेथड्स कैसे बनाएं जो ऑब्जेक्ट्स को क्रियाएं करने दें।

यह Python में OOP की नींव है। अगली बार, हम विरासत (inheritance) का पता लगाएंगे — जो मौजूदा क्लासेस पर आधारित नई क्लासेस बनाने का तरीका है।