मुख्य सामग्री पर जाएँ

Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग: एक संपूर्ण गाइड

Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की बुनियादें सीखें: क्लास, ऑब्जेक्ट, एट्रिब्यूट्स और मेथड्स को चरण-दर-चरण कोड उदाहरणों के साथ समझाया गया है।
· 12 मि॰ पढ़ें

AI के साथ खोजें

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

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

संक्षेप में

  • OOP कोड को क्लासेज़ (ब्लूप्रिंट) और ऑब्जेक्ट्स (उन ब्लूप्रिंट के इंस्टेंस) के इर्द-गिर्द संगठित करता है

  • class कीवर्ड से क्लास परिभाषित करें और एट्रिब्यूट्स को __init__(self) के अंदर इनिशियलाइज़ करें

  • इंस्टेंस मेथड्स self के माध्यम से ऑब्जेक्ट डेटा पर काम करते हैं और डॉट नोटेशन से कॉल होते हैं: my_object.method()

  • Python OOP के चारों स्तंभों का समर्थन करता है: एन्कैप्सुलेशन, इनहेरिटेंस, पॉलिमॉर्फिज्म और एब्स्ट्रैक्शन

  • OOP कोड री-यूज़ को बढ़ावा देता है ताकि एक ही क्लास टेम्पलेट से कई ऑब्जेक्ट बनाए जा सकें

OOP क्या है?

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) इम्पेरेटिव प्रोग्रामिंग पैराडाइम पर आधारित है, जिसमें स्टेटमेंट्स का उपयोग करके प्रोग्राम की स्थिति बदली जाती है। इम्पेरेटिव का अर्थ है कि यह इस पर केंद्रित है कि प्रोग्राम कैसे काम करे। इम्पेरेटिव प्रोग्रामिंग भाषाओं के उदाहरण हैं C, C++, Java, Go, Ruby और Python।

यह घोषणात्मक (डिक्लेरेटिव) प्रोग्रामिंग के विपरीत है, जो इस पर केंद्रित होती है कि कंप्यूटर प्रोग्राम क्या हासिल करे, न कि कैसे (जैसे, SQL, XQuery)। पैराडाइम्स की तुलना के लिए हमारा फंक्शनल प्रोग्रामिंग बनाम OOP गाइड देखें।

OOP ऑब्जेक्ट्स और क्लासेज़ की अवधारणा का उपयोग करता है। एक क्लास को ऑब्जेक्ट्स के लिए ‘ब्लूप्रिंट’ के रूप में समझा जा सकता है। इनमें अपने

  • एट्रिब्यूट्स: वे विशेषताएँ जो उनके पास होती हैं
  • मेथड्स: वे क्रियाएँ जो वे करते हैं

OOP के अन्य डिजाइन पैटर्न्स पर कुछ प्रमुख लाभ हैं। डेवलपमेंट अक्सर तेज़ और सस्ता होता है, और मॉड्यूलर अप्रोच सॉफ्टवेयर को बनाए रखना आसान बनाता है। इससे उच्च-गुणवत्ता वाला सॉफ्टवेयर बनता है, जिसे नए मेथड्स और एट्रिब्यूट्स के साथ बढ़ाया भी जा सकता है।

हालाँकि सीखने की कर्व लंबी होती है। मूल अवधारणाएँ पूरी तरह समझने के लिए शुरुआती निवेश अधिक चाहिए। कम्प्यूटेशनली, OOP सॉफ्टवेयर धीमा होता है और अधिक मेमोरी उपयोग करता है क्योंकि अधिक लाइनों का कोड लिखना पड़ता है।

OOP के चार स्तंभ

क्लासेज़ और मेथड्स से आगे, OOP चार स्तंभों पर टिका है, जिन पर मैंने अब तक केवल संक्षेप में चर्चा की है। प्रत्येक का अपना गहन अध्ययन बनता है, लेकिन यहाँ समर्पित ट्यूटोरियल्स के लिंक के साथ एक त्वरित अवलोकन है।

स्तंभइसका अर्थऔर जानें
Encapsulationडेटा और मेथड्स को साथ में बाँधना, और नेमिंग कन्वेंशंस से एक्सेस नियंत्रित करना (_private, __name_mangled)Python में एन्कैप्सुलेशन
Inheritanceपेरेंट क्लास के व्यवहार को पुनः उपयोग और विस्तारित करने के लिए चाइल्ड क्लास बनानाPython Inheritance
Polymorphismविभिन्न क्लासेज़ का एक ही इंटरफ़ेस साझा करना, ताकि कोड ऑब्जेक्ट्स के साथ अदला-बदली से काम कर सकेPython में OOP कोर्स
Abstractionएब्सट्रैक्ट बेस क्लासेज़ का उपयोग कर साफ़ इंटरफ़ेस के पीछे जटिलता छिपानाPython Abstract Classes

OOP उदाहरण

एक क्लास का उदाहरण Dog क्लास है। इसे किसी विशेष कुत्ते या आपके अपने कुत्ते के रूप में न सोचें। हम सामान्य रूप से बता रहे हैं कि कुत्ता क्या है और क्या कर सकता है। आम तौर पर कुत्तों के पास name और age होते हैं; ये इंस्टेंस एट्रिब्यूट्स हैं। कुत्ते bark भी कर सकते हैं; यह एक मेथड है।

जब आप किसी विशेष कुत्ते के बारे में बात करते हैं, तो प्रोग्रामिंग में वह एक ऑब्जेक्ट होगा: ऑब्जेक्ट क्लास का इंस्टैंसिएशन होता है। यही मूल सिद्धांत OOP का आधार है। तो मेरा कुत्ता Ozzy, उदाहरण के लिए, Dog क्लास से संबंधित है। उसके एट्रिब्यूट्स हैं name = 'Ozzy' और age = '2'। एक अलग कुत्ते के एट्रिब्यूट्स अलग होंगे।

Python में OOP

Python OOP सीखने और लागू करने के लिए सबसे लोकप्रिय भाषाओं में से एक है। नीचे, मैं बताता/बताती हूँ कि Python ऑब्जेक्ट-ओरिएंटेड कोड के लिए क्यों उपयुक्त है और कोर सिंटैक्स से होकर गुजरता/गुजरती हूँ।

क्या Python ऑब्जेक्ट-ओरिएंटेड है?

Python एक बेहतरीन प्रोग्रामिंग भाषा है जो OOP को सपोर्ट करती है। आप इसका उपयोग एट्रिब्यूट्स और मेथड्स वाली क्लास परिभाषित करने और फिर उन्हें कॉल करने के लिए करेंगे।

Java, C++ या R जैसी अन्य भाषाओं पर Python का प्रमुख लाभ यह है कि यह उच्च-स्तरीय डेटा प्रकारों वाली एक डायनेमिक भाषा है। इसका अर्थ है कि प्रोग्रामर को वेरिएबल्स और आर्ग्युमेंट्स के प्रकार घोषित करने की आवश्यकता नहीं होती, जिससे डेवलपमेंट तेज़ होता है और कोड Java या C++ की तुलना में अधिक पठनीय बनता है।

यदि आप Python में नए हैं, तो हमारा Introduction to Python कोर्स अवश्य देखें।

क्लास कैसे बनाएं

Python में क्लास परिभाषित करने के लिए, आप class कीवर्ड का उपयोग कर सकते हैं, इसके बाद क्लास का नाम और एक कॉलन लगाएँ।

क्लास के अंदर, सामान्यतः __init__ मेथड (एक डंडर मेथड) को def के साथ परिभाषित किया जाता है। यह इनिशियलाइज़र है जिसका उपयोग आप बाद में ऑब्जेक्ट्स को इंस्टैंशिएट करने के लिए कर सकते हैं। यह Java के कंस्ट्रक्टर जैसा है।

__init__ नए ऑब्जेक्ट बनाते समय स्वतः कॉल होता है। यह एक आर्ग्युमेंट लेता है: self, जो ऑब्जेक्ट स्वयं को संदर्भित करता है।

मेथड के अंदर, अभी के लिए pass कीवर्ड का उपयोग किया गया है, क्योंकि Python अपेक्षा करता है कि आप वहाँ कुछ टाइप करें। सही इंडेंटेशन का ध्यान रखें!

class Dog:

    def __init__(self):
        pass

नोट: Python में self, C++ या Java के this के बराबर है।

इस मामले में, आपके पास एक (लगभग खाली) Dog क्लास है, लेकिन अभी कोई ऑब्जेक्ट नहीं। आइए एक बनाते हैं!

ऑब्जेक्ट्स इंस्टैंशिएट करना

किसी ऑब्जेक्ट को इंस्टैंशिएट करने के लिए, क्लास का नाम टाइप करें और उसके बाद दो ब्रैकेट लगाएँ। आप इसे किसी वेरिएबल को असाइन कर सकते हैं ताकि ऑब्जेक्ट का ट्रैक रख सकें।

ozzy = Dog()

और इसे प्रिंट करें:

print(ozzy)
<__main__.Dog object at 0x111f47278>

क्लास में एट्रिब्यूट्स जोड़ना

ozzy को प्रिंट करने के बाद, यह स्पष्ट है कि यह ऑब्जेक्ट एक कुत्ता है। लेकिन आपने अभी तक कोई एट्रिब्यूट नहीं जोड़ा है। आइए Dog क्लास को फिर से लिखकर इसका नाम और उम्र दें:

class Dog:

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

आप देख सकते हैं कि फ़ंक्शन अब self के बाद दो आर्ग्युमेंट्स लेता है: name और age। इन्हें क्रमशः self.name और self.age को असाइन किया जाता है। अब आप नाम और उम्र के साथ एक नया ozzy ऑब्जेक्ट बना सकते हैं:

ozzy = Dog("Ozzy", 2)

Python में किसी ऑब्जेक्ट के एट्रिब्यूट्स को एक्सेस करने के लिए, आप डॉट नोटेशन का उपयोग कर सकते हैं। यह ऑब्जेक्ट का नाम टाइप कर, उसके बाद एक डॉट और एट्रिब्यूट का नाम लिखकर किया जाता है

print(ozzy.name)

print(ozzy.age)
Ozzy
2

इसे एक अधिक विस्तृत वाक्य में भी जोड़ा जा सकता है:

print(ozzy.name + " is " + str(ozzy.age) + " year(s) old.")
Ozzy is 2 year(s) old.

यहाँ str() फ़ंक्शन का उपयोग age एट्रिब्यूट, जो कि एक इंटीजर है, को स्ट्रिंग में बदलने के लिए किया गया है, ताकि आप इसे print() फ़ंक्शन में उपयोग कर सकें।

क्लास में मेथड्स परिभाषित करें

अब जबकि आपके पास Dog क्लास है, इसमें नाम और उम्र तो हैं, जिन्हें आप ट्रैक कर सकते हैं, लेकिन यह वास्तव में कुछ करता नहीं है। यहीं पर इंस्टेंस मेथड्स काम आते हैं। आप क्लास को फिर से लिखकर अब उसमें bark() मेथड शामिल कर सकते हैं। ध्यान दें कि def कीवर्ड का फिर से उपयोग किया गया है, साथ ही self आर्ग्युमेंट भी।

class Dog:

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

    def bark(self):
        print("bark bark!")

bark मेथड अब एक नए ozzy ऑब्जेक्ट को इंस्टैंशिएट करने के बाद डॉट नोटेशन का उपयोग करके कॉल किया जा सकता है। मेथड को स्क्रीन पर "bark bark!" प्रिंट करना चाहिए। .bark() में कोष्ठकों पर ध्यान दें। मेथड कॉल करते समय इन्हें हमेशा उपयोग किया जाता है। इस मामले में ये खाली हैं, क्योंकि bark() मेथड कोई आर्ग्युमेंट नहीं लेता।

ozzy = Dog("Ozzy", 2)

ozzy.bark()
bark bark!

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

class Dog:

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

    def bark(self):
        print("bark bark!")

    def doginfo(self):
        print(self.name + " is " + str(self.age) + " year(s) old.")

ozzy = Dog("Ozzy", 2)
skippy = Dog("Skippy", 12)
filou = Dog("Filou", 8)

ozzy.doginfo()
skippy.doginfo()
filou.doginfo()
Ozzy is 2 year(s) old.
Skippy is 12 year(s) old.
Filou is 8 year(s) old.

जैसा कि आप देख सकते हैं, आप डॉट नोटेशन के साथ ऑब्जेक्ट्स पर doginfo() मेथड कॉल कर सकते हैं। अब प्रतिक्रिया इस पर निर्भर करती है कि आप किस Dog ऑब्जेक्ट पर यह मेथड कॉल कर रहे हैं।

चूँकि कुत्ते बड़े होते जाते हैं, तो अच्छा होगा यदि आप उनकी उम्र को उसी अनुसार समायोजित कर सकें। Ozzy अभी 3 साल का हुआ है, तो उसकी उम्र बदलते हैं।

ozzy.age = 3

print(ozzy.age)
3

यह उतना ही आसान है जितना कि एट्रिब्यूट को नया मान असाइन करना। आप इसे Dog क्लास में birthday() मेथड के रूप में भी लागू कर सकते हैं:

class Dog:

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

    def bark(self):
        print("bark bark!")

    def doginfo(self):
        print(self.name + " is " + str(self.age) + " year(s) old.")

    def birthday(self):
        self.age +=1

ozzy = Dog("Ozzy", 2)

print(ozzy.age)
2
ozzy.birthday()

print(ozzy.age)
3

अब, आपको कुत्ते की उम्र मैन्युअली बदलने की ज़रूरत नहीं। जब भी उसका जन्मदिन हो, आप केवल birthday() मेथड कॉल कर सकते हैं। 

मेथड्स को आर्ग्युमेंट्स पास करना

आप चाहेंगे कि हमारे कुत्तों का एक बडी (साथी) हो। यह वैकल्पिक होना चाहिए क्योंकि सभी कुत्ते इतने मिलनसार नहीं होते।

नीचे दिए गए setBuddy() मेथड पर नज़र डालें। यह सामान्य रूप से self और साथ में buddy को आर्ग्युमेंट्स के रूप में लेता है। इस मामले में, buddy एक अन्य Dog ऑब्जेक्ट होगा। self.buddy एट्रिब्यूट को buddy पर सेट करें, और buddy.buddy एट्रिब्यूट को self पर।

इसका मतलब है कि रिश्ता पारस्परिक है; आप अपने बडी के बडी हैं। इस मामले में, Filou Ozzy का बडी होगा, जिसका अर्थ है कि Ozzy अपने-आप Filou का बडी बन जाता है।

आप इन एट्रिब्यूट्स को मेथड परिभाषित करने के बजाय मैन्युअली भी सेट कर सकते हैं, लेकिन तब जब भी आप बडी सेट करना चाहेंगे, अधिक काम (एक की बजाय दो लाइनें) लिखनी पड़ेंगी।

ध्यान दें कि Python में आपको आर्ग्युमेंट के प्रकार को निर्दिष्ट करने की आवश्यकता नहीं होती। यदि यह Java होता, तो यह आवश्यक होता।

class Dog:

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

    def bark(self):
        print("bark bark!")

    def doginfo(self):
        print(self.name + " is " + str(self.age) + " year(s) old.")

    def birthday(self):
        self.age +=1

    def setBuddy(self, buddy):
        self.buddy = buddy
        buddy.buddy = self

अब आप डॉट नोटेशन के साथ मेथड कॉल कर सकते हैं और इसे एक अन्य Dog ऑब्जेक्ट पास कर सकते हैं। इस मामले में, Ozzy का बडी Filou होगा:

ozzy = Dog("Ozzy", 2)
filou = Dog("Filou", 8)

ozzy.setBuddy(filou)

यदि अब आप Ozzy के बडी के बारे में कुछ जानकारी प्राप्त करना चाहते हैं, तो आप डॉट नोटेशन को दो बार उपयोग कर सकते हैं: पहले, Ozzy के बडी को संदर्भित करने के लिए, और दूसरी बार उसके एट्रिब्यूट को संदर्भित करने के लिए।

print(ozzy.buddy.name)
print(ozzy.buddy.age)
Filou
8

ध्यान दें कि यह Filou के लिए भी इसी तरह किया जा सकता है।

print(filou.buddy.name)
print(filou.buddy.age)
Ozzy
2

बडी के मेथड्स भी कॉल किए जा सकते हैं। doginfo() को जो self आर्ग्युमेंट पास होता है, वह अब ozzy.buddy है, जो कि filou है।

ozzy.buddy.doginfo()
Filou is 8 year(s) old.

Python OOP उदाहरण

Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक उदाहरण जहाँ काम आ सकता है, हमारा Python For Finance: Algorithmic Trading ट्यूटोरियल है। इसमें, हम किसी स्टॉक पोर्टफोलियो के लिए ट्रेडिंग रणनीति सेट करना समझाते हैं।

ट्रेडिंग रणनीति किसी स्टॉक प्राइस के मूविंग एवरेज पर आधारित है। यदि signals['short_mavg'][short_window:] > signals['long_mavg'][short_window:] पूरा होता है, तो एक सिग्नल बनाया जाता है। यह सिग्नल स्टॉक की भविष्य की प्राइस चेंज का अनुमान है।

नीचे दिए गए कोड में, आप देखेंगे कि पहले इनिशियलाइज़ेशन है, फिर मूविंग एवरेज कैलकुलेशन और सिग्नल जेनरेशन। चूँकि यह ऑब्जेक्ट-ओरिएंटेड कोड नहीं है, यह एक बड़ा ब्लॉक है जो एक साथ निष्पादित होता है।

ध्यान दें कि हम उदाहरण में aapl का उपयोग कर रहे हैं, जो Apple का स्टॉक टिकर है। यदि आप किसी अन्य स्टॉक के लिए यह करना चाहते, तो आपको कोड फिर से लिखना पड़ता।

# Initialize
short_window = 40
long_window = 100
signals = pd.DataFrame(index=aapl.index)
signals['signal'] = 0.0

# Create short simple moving average over the short window
signals['short_mavg'] = aapl['Close'].rolling(window=short_window, min_periods=1, center=False).mean()

# Create long simple moving average over the long window
signals['long_mavg'] = aapl['Close'].rolling(window=long_window, min_periods=1, center=False).mean()

# Create signals
signals['signal'][short_window:] = np.where(signals['short_mavg'][short_window:] > signals['long_mavg'][short_window:], 1.0, 0.0)   

# Generate trading orders
signals['positions'] = signals['signal'].diff()

# Print `signals`
print(signals)

ऑब्जेक्ट-ओरिएंटेड अप्रोच में, आपको इनिशियलाइज़ेशन और सिग्नल जेनरेशन कोड केवल एक बार लिखने की आवश्यकता होती है।

फिर आप हर उस स्टॉक के लिए, जिस पर आप रणनीति गणना करना चाहते हैं, एक नया ऑब्जेक्ट बना सकते हैं और उस पर generate_signals() मेथड कॉल कर सकते हैं। ध्यान दें कि OOP कोड ऊपर के कोड से बहुत मिलता-जुलता है, जिसमें self का अतिरिक्त उपयोग है।

class MovingAverage():

    def __init__(self, symbol, bars, short_window, long_window):
        self.symbol = symbol
        self.bars = bars
        self.short_window = short_window
        self.long_window = long_window

    def generate_signals(self):
        signals = pd.DataFrame(index=self.bars.index)
        signals['signal'] = 0.0

        signals['short_mavg'] = self.bars['Close'].rolling(window=self.short_window, min_periods=1, center=False).mean()
        signals['long_mavg'] = bars['Close'].rolling(window=self.long_window, min_periods=1, center=False).mean()

        signals['signal'][self.short_window:] = np.where(signals['short_mavg'][self.short_window:] > signals['long_mavg'][self.short_window:], 1.0, 0.0)   

        signals['positions'] = signals['signal'].diff()   

        return signals

अब आप केवल अपनी मनचाही पैरामीटर्स के साथ एक ऑब्जेक्ट इंस्टैंशिएट कर सकते हैं और उसके लिए सिग्नल जेनरेट कर सकते हैं।

apple = MovingAverage('aapl', aapl, 40, 100)
print(apple.generate_signals())

इसे किसी दूसरे स्टॉक के लिए करना बहुत आसान हो जाता है। यह सिर्फ एक अलग स्टॉक सिंबल के साथ नया ऑब्जेक्ट इंस्टैंशिएट करने की बात है।

microsoft = MovingAverage('msft', msft, 40, 100)
print(microsoft.generate_signals())

अंतिम विचार

हमने Python में कुछ प्रमुख OOP अवधारणाएँ कवर कर ली हैं। अब आप जानते हैं कि क्लास और मेथड्स कैसे डिक्लेयर करें, ऑब्जेक्ट्स कैसे इंस्टैंशिएट करें, उनके एट्रिब्यूट्स कैसे सेट करें, और इंस्टेंस मेथड्स कैसे कॉल करें। ये कौशल आपकी डेटा साइंटिस्ट की भविष्य की करियर में काम आएँगे।

क्लासेज़ को परिभाषित करने के अधिक आधुनिक अप्रोच के लिए, Python डेटा क्लासेज़ देखें, जो बोइलरप्लेट कोड को कम करती हैं। यदि आप Python के साथ आगे काम करने के लिए आवश्यक मुख्य अवधारणाओं का विस्तार करना चाहते हैं, तो हमारा Intermediate Python कोर्स ज़रूर देखें।

OOP के साथ, जैसे-जैसे आपका प्रोग्राम बड़ा होगा, आपका कोड जटिलता में बढ़ेगा। आपके पास विभिन्न क्लासेज़, सबक्लासेज़, ऑब्जेक्ट्स, इनहेरिटेंस, इंस्टेंस मेथड्स, और बहुत कुछ होगा। जटिल इनहेरिटेंस परिदृश्यों के लिए, मल्टीपल इनहेरिटेंस और super() के बारे में जानें।

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

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) क्या है?

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग एक प्रोग्रामिंग पैराडाइम है जो "ऑब्जेक्ट्स" की अवधारणा पर आधारित है, जो डेटा और उस डेटा में हेरफेर करने वाला कोड दोनों रख सकते हैं। OOP में, ऑब्जेक्ट्स "क्लासेज़" नामक टेम्पलेट्स से बनाए जाते हैं, जो उनके द्वारा बनाए गए ऑब्जेक्ट्स के गुण और व्यवहार परिभाषित करते हैं। OOP आपको पुन: प्रयोज्य कोड बनाने और वास्तविक दुनिया की अवधारणाओं का अधिक निकटता से मॉडल तैयार करने देता है, जिससे यह कई सॉफ्टवेयर प्रोजेक्ट्स के लिए एक लोकप्रिय विकल्प बनता है।

Python में क्लास और ऑब्जेक्ट्स क्या हैं?

Python में, क्लास ऑब्जेक्ट्स बनाने के लिए एक टेम्पलेट है। यह उन ऑब्जेक्ट्स के गुण और व्यवहार परिभाषित करता है जो इससे बनाए जाते हैं। ऑब्जेक्ट एक क्लास का इंस्टेंस होता है, जिसे क्लास को एक फ़ंक्शन की तरह कॉल करके बनाया जाता है। ऑब्जेक्ट में क्लास द्वारा परिभाषित डेटा और व्यवहार होता है, साथ ही एक विशिष्ट पहचान भी होती है।

मैं Python में क्लास कैसे परिभाषित करूँ?

Python में क्लास परिभाषित करने के लिए, आप class कीवर्ड का उपयोग करते हैं, उसके बाद क्लास का नाम और कॉलन लिखते हैं। क्लास परिभाषा इंडेंटेड होती है, और इंडेंटेड ब्लॉक में वे प्रॉपर्टीज़ और मेथड्स (फंक्शन्स) होते हैं जो क्लास से संबंधित हैं।

मैं किसी क्लास से ऑब्जेक्ट कैसे बनाऊँ?

Python में किसी क्लास से ऑब्जेक्ट बनाने के लिए, आप क्लास को एक फ़ंक्शन की तरह कॉल करते हैं और आवश्यक आर्ग्युमेंट्स को क्लास के कंस्ट्रक्टर (यानी __init__ मेथड) में पास करते हैं। 

Python में OOP के चार स्तंभ क्या हैं?

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

क्लास एट्रिब्यूट और इंस्टेंस एट्रिब्यूट में क्या अंतर है?

क्लास एट्रिब्यूट क्लास की सभी इंस्टेंस द्वारा साझा किया जाता है और इसे सीधे क्लास बॉडी में परिभाषित किया जाता है। इंस्टेंस एट्रिब्यूट प्रत्येक ऑब्जेक्ट के लिए विशिष्ट होता है और __init__ मेथड के अंदर self का उपयोग करके परिभाषित किया जाता है। उदाहरण के लिए, सभी कुत्तों के पास एक साझा species क्लास एट्रिब्यूट हो सकता है, लेकिन हर कुत्ते का अपना name इंस्टेंस एट्रिब्यूट होगा।

विषय