Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग?

पायथन अपने अस्तित्व के बाद से एक वस्तु उन्मुख प्रोग्रामिंग भाषा रही है। क्लास और ऑब्जेक्ट ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के दो मुख्य बिल्डिंग ब्लॉक हैं।

एक वर्ग एक नए प्रकार की वस्तुएँ बनाता है जहाँ वस्तुएँ वर्ग के उदाहरण हैं।

आइए एक सरलतम वर्ग बनाएं,

पायथन में एक वर्ग परिभाषित करें

आइए बस एक खाली वर्ग को परिभाषित करें।

# एक क्लासक्लास व्हीकल को परिभाषित करें ():पास # एक खाली ब्लॉक# इंस्टेंटिंग ऑब्जेक्ट्सv =व्हीकल ()प्रिंट (v)

परिणाम

<__main__.0x055DB9F0>
. पर वाहन वस्तु

हमने ऊपर क्या किया है?

तो सबसे पहले, हम क्लास स्टेटमेंट का उपयोग नई क्लास व्हीकल बनाने के लिए करते हैं, जिसके बाद स्टेटमेंट्स का इंडेंटेड ब्लॉक होता है जो क्लास का बॉडी बनाते हैं। हमारे मामले में, हमारे पास एक खाली ब्लॉक है जिसे पास स्टेटमेंट का उपयोग करके अभियोगित किया गया है।

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

ऑब्जेक्ट (v) एक वर्ग का एक उदाहरण है। प्रत्येक विशिष्ट वस्तु एक विशेष वर्ग का एक उदाहरण है। हम एक वर्ग के कई उदाहरण बना सकते हैं और इसमें वर्ग विधियाँ और गुण शामिल हैं।

कक्षा के अंदर परिभाषित सभी विधियाँ और चर इसकी वस्तुओं के लिए सुलभ हैं।

कक्षा के अंदर विधि परिभाषित करें

क्लास व्हीकल ():डीईएफ़ कार (सेल्फ):कलर ='रेड' रिटर्न कलरव =व्हीकल () प्रिंट (वी.कार ()) प्रिंट (वी)

परिणाम

लाल<__main__. 0x05A59690 पर वाहन वस्तु> 

उदाहरण के तरीके

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

आम तौर पर हम फ़ंक्शन को कॉल करते समय कोई तर्क (स्वयं) प्रदान नहीं करते हैं, लेकिन जब भी हम उस वर्ग के अंदर उस फ़ंक्शन को परिभाषित करते हैं, तो तर्क (स्वयं) आवश्यक होता है।

आइए उदाहरण का उपयोग करके उपरोक्त अवधारणा को समझते हैं।

class myClass():def myMethod(self):रिटर्न 'Hello'myInstance =myClass()print(myInstance.myMethod())

परिणाम

नमस्कार

तो उपरोक्त कार्यक्रम में, हम एक वर्ग myClass परिभाषित करते हैं और इसके अंदर हमने एक विधि myMethod() परिभाषित की है और केवल एक तर्क को स्वयं कहा जाता है।

हालाँकि, जब हम एक वर्ग के उदाहरण के माध्यम से विधि कहते हैं, तो हमने इसके लिए कोई तर्क नहीं दिया है। ऐसा इसलिए है क्योंकि जब भी हम किसी इंस्टेंस पर मेथड को कॉल करते हैं, तो पहला आर्गुमेंट ही क्लास का इंस्टेंस होता है।

आइए उपरोक्त कार्यक्रम से एक पंक्ति को संशोधित करें-

def myMethod():

मैं सिर्फ अपनी विधि (myMethod ()) से तर्क (स्वयं) को हटा देता हूं। अब प्रोग्राम को फिर से चलाते हैं और देखते हैं कि क्या हुआ।

================पुनः प्रारंभ करें:C:\Python\Python361\oops_python.py ===============ट्रेसबैक (अधिकांश हालिया कॉल लास्ट):फ़ाइल "C:\Python\Python361\oops_python.py", लाइन 18, <मॉड्यूल>प्रिंट (myInstance.myMethod ()) में टाइप एरर:myMethod () 0 स्थितीय तर्क लेता है लेकिन 1 दिया गया था

तो यह अनिवार्य है कि विधि के लिए आपका पहला तर्क स्वयं है।

आवृत्ति विशेषताएं

ये ऑब्जेक्ट-विशिष्ट विशेषताएँ हैं जिन्हें __init__ विधि के पैरामीटर के रूप में परिभाषित किया गया है। प्रत्येक वस्तु के अपने लिए भिन्न मान हो सकते हैं।

नीचे दिए गए उदाहरण पर विचार करें,

आयात randomclass myClass():def myMethod(self):self.attrib1 =random.randint(1, 11)self.attrib2 =random.randint(1,21)myInst =myClass()myInst.myMethod()print (myInst.attrib1)प्रिंट (myInst.attrib2)

परिणाम

218

उपरोक्त कार्यक्रम में, "attrib1" और "attrib2" उदाहरण विशेषताएँ हैं।

पायथन में इनिट कंस्ट्रक्टर

कंस्ट्रक्टर एक विशेष प्रकार की विधि है जिसका उपयोग क्लास के इंस्टेंस सदस्यों को इनिशियलाइज़ करने के लिए किया जाता है।

कंस्ट्रक्टर दो प्रकार के हो सकते हैं-

  • पैरामीटरेटेड कंस्ट्रक्टर
  • गैर-पैरामीटरयुक्त कंस्ट्रक्टर

पायथन में, "__init__" प्रत्येक अजगर वर्ग से जुड़ी एक अनूठी विधि है।

पायथन इसे कक्षा से बनाई गई प्रत्येक वस्तु के लिए स्वचालित रूप से कॉल करता है। इसका उद्देश्य उपयोगकर्ता द्वारा प्रदत्त मूल्यों के साथ वर्ग विशेषताओं को प्रारंभ करना है।

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में इसे कंस्ट्रक्टर कहा जाता है।

वर्ग कर्मचारी:def __init__(self, name):self.name =name def display(self):print("कर्मचारी का नाम है:", self.name)obj1 =Employee('Zack')obj2 =कर्मचारी ('राजेश') obj3 =कर्मचारी ('तशलीम') obj3.display() obj1.display()

परिणाम

कर्मचारी का नाम है:तशलीमकर्मचारी का नाम है:जैक

उपरोक्त कार्यक्रम में, जब हम एक उदाहरण (obj1 और obj2) बनाते हैं, तो हम नाम तर्क पास करते हैं और निर्माता उस तर्क को आवृत्ति विशेषता को सौंप देगा।

इसलिए जब हम किसी विशेष इंस्टेंस पर डिस्प्ले मेथड को कॉल करते हैं, तो हमें विशेष नाम मिलेगा।

पायथन में एनकैप्सुलेशन

अजगर होने के नाते प्रकृति में ऊप है, यह विधियों और चरों तक पहुंच को प्रतिबंधित करने का एक तरीका प्रदान करता है।

डेटा इनकैप्सुलेशन के साथ, हम ऑब्जेक्ट पर एक विशेषता को कॉल करके इंस्टेंस विशेषता को सीधे संशोधित नहीं कर सकते हैं। यह हमारे एप्लिकेशन को हैकर्स के लिए असुरक्षित बना देगा। हालांकि, हम विशिष्ट विधि को कॉल करके केवल आवृत्ति विशेषता मान बदलते हैं।

उदाहरण

क्लास उत्पाद:def __init__(self):self.__maxprice =1000 self.__minprice =1 def salesPrice(self):प्रिंट ('हमारा उत्पाद अधिकतम मूल्य है:{}'.format(self.__maxprice)) प्रिंट( 'हमारा उत्पाद न्यूनतम मूल्य है:{}'। प्रारूप (स्वयं.__minprice)) def productMaxPrice (स्वयं, मूल्य):स्वयं .__maxprice =pricedef productMinPrice (स्वयं, मूल्य):स्वयं .__minprice =priceprod1 =उत्पाद() prod1.sellingPrice ()prod1.__maxprice =1500prod1.sellingPrice()prod1.__minprice =10prod1.sellingPrice()prod1.productMaxPrice(1500)prod1.sellingPrice()prod1.productMinPrice(10)prod1.sellingPrice()

परिणाम

हमारे उत्पाद की अधिकतम कीमत है:1000हमारे उत्पाद की न्यूनतम कीमत है:1हमारे उत्पाद की अधिकतम कीमत है:1000हमारे उत्पाद की न्यूनतम कीमत है:1हमारे उत्पाद की अधिकतम कीमत है:1000हमारे उत्पाद की न्यूनतम कीमत है:1हमारे उत्पाद की अधिकतम कीमत है:1500हमारे उत्पाद की न्यूनतम कीमत है :1हमारे उत्पाद की अधिकतम कीमत है:1500हमारे उत्पाद की न्यूनतम कीमत है:10

उपरोक्त कार्यक्रम में, हमने उत्पाद वर्ग का एक उदाहरण बनाया है और आवृत्ति चर के मूल्य को संशोधित करने का प्रयास किया है, लेकिन यह अभी भी वह मान देता है जो कंस्ट्रक्टर के अंदर सेट होता है।

इंस्टेंस एट्रिब्यूट के मान को संशोधित करने का एकमात्र तरीका productMaxPrice () या productMinPrice () विधि को कॉल करना है।


  1. पायथन में मेटाक्लास के साथ मेटा प्रोग्रामिंग

    मेटाप्रोग्रामिंग शब्द कंप्यूटर प्रोग्रामिंग को संदर्भित करता है जहां कंप्यूटर प्रोग्राम हेरफेर करने की कोशिश करते हैं या स्वयं का ज्ञान रखते हैं। पायथन मेटाक्लास नामक एक नए प्रकार के वर्ग के माध्यम से कक्षाओं के लिए मेटाप्रोग्रामिंग का समर्थन करता है। पायथन में मेटाक्लास के माध्यम से मेटा-प्रोग्राम

  1. पायथन ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में repr () फ़ंक्शन क्या करता है?

    आधिकारिक पायथन दस्तावेज कहता है कि __repr__() किसी वस्तु के आधिकारिक स्ट्रिंग प्रतिनिधित्व की गणना करने के लिए उपयोग किया जाता है। repr() बिल्ट-इन फ़ंक्शन ऑब्जेक्ट को प्रदर्शित करने के लिए __repr__() का उपयोग करता है। __repr__() ऑब्जेक्ट का प्रिंट करने योग्य प्रतिनिधित्व देता है, जो इस ऑब्जेक्ट को ब

  1. पायथन में वस्तु उन्मुख अवधारणाओं को संक्षेप में समझाएं?

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