पायथन में अमूर्तता को समझना

| | | | | | | | | | | | | | | | | | |

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

 एब्स्ट्रैक्शन



& nbsp;

पायथन में एब्स्ट्रैक्शन क्या है?

उदाहरण के लिए, लोग कार को हजारों अलग-अलग पुर्जों के संग्रह के रूप में नहीं समझते हैं। इसके बजाय, वे इसे अपने स्वयं के अनूठे व्यवहार के साथ एक अच्छी तरह से परिभाषित वस्तु के रूप में देखते हैं। यह अमूर्तता लोगों को इसे बनाने वाले भागों की जटिलता से अवगत हुए बिना कार चलाने की अनुमति देती है। वे इंजन ट्रांसमिशन और ब्रेकिंग सिस्टम के विवरण को अनदेखा कर सकते हैं। इसके बजाय, वे पूरी वस्तु का उपयोग कर सकते हैं।

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

मुद्दा यह है कि हम ड्राइव करते हैं। एक कार (या कोई अन्य जटिल प्रणाली) जो पदानुक्रमित सार तत्वों का उपयोग करती है।

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

पायथन में एब्सट्रैक्ट क्लासेस और मेथड्स

एब्सट्रैक्ट क्लास घोषित करने के लिए, हमें सबसे पहले abc मॉड्यूल को इम्पोर्ट करना होगा। . आइए एक उदाहरण देखें।

 abc इम्पोर्ट से ABC क्लास abs_class (ABC): #abstract मेथड्स 

यहाँ abs_class &यह एक एब्स्ट्रैक्ट है वह वर्ग जिसके भीतर अमूर्त विधियों या किसी अन्य विधियों को परिभाषित किया जा सकता है। अन्य तरीकों की। उदाहरण के लिए, हम नीचे देख सकते हैं।

 abc आयात ABC से, abstractmethod वर्ग abs_class (ABC): #normal method def method (self): # विधि परिभाषा @abstractmethod def Abs_method (स्वयं): #Abs_method परिभाषा 

यहां विधि () और सामान्य विधि, जबकि Abs_method () और एक सार विधि है कि abc मॉड्यूल से @abstractmethod को लागू करता है।

उदाहरण

अब जबकि हम अमूर्त वर्गों और विधियों के बारे में जानते हैं, आइए एक उदाहरण देखें।

 abc इम्पोर्ट एबीसी, एब्स्ट्रैक्टमेथड क्लास एब्सक्लास (एबीसी): डिफ प्रिंट (सेल्फ, एक्स): प्रिंट ("पास वैल्यू:", x) @abstractmethod def कार्य (स्वयं): प्रिंट ("हम Absclass कार्य के अंदर हैं") वर्ग test_class (Absclass): def कार्य (स्वयं): प्रिंट ("हम test_class कार्य के अंदर हैं") वर्ग example_class (Absclass): def कार्य (स्वयं): प्रिंट ("हम example_class कार्य के अंदर हैं") # test_class निर्मित test_obj = test_class () test_obj.task () test_obj.print (100) #object of example_class निर्मित ex पर्याप्त_obj = example_class () example_obj.task () का ऑब्जेक्ट ) example_obj .print (200) प्रिंट ("test_obj Absclass का उदाहरण है?", isinstance (test_obj, Absclass)) प्रिंट ("example_obj Absclass का उदाहरण है?", isinstance (example_obj, Absclass)) 

आउटपुट:

 उदाहरण

कहां,

Absclass और यह एक अमूर्त वर्ग है जो abc मॉड्यूल के ABC वर्ग से विरासत में मिला है। इसमें सार कार्य () विधि और प्रिंट () विधि शामिल है जो उपयोगकर्ता को दिखाई देती है। इस अमूर्त वर्ग से विरासत में प्राप्त अन्य दो वर्ग हैं &ये test_class और example_class हैं। दोनों की अपनी कार्य () विधि (एक सार विधि विस्तार) है।

उपयोगकर्ता द्वारा test_class और example_class कक्षाओं से ऑब्जेक्ट बनाने और कार्य () विधि को कॉल करने के बाद इन दोनों के लिए, दोनों वर्गों के भीतर छिपी कार्य () विधि परिभाषाएं चलन में आती हैं। ये परिभाषाएँ उपयोगकर्ता से छिपी हुई हैं। अमूर्त वर्ग Absclass से सार विधि कार्य () को वास्तव में कभी नहीं कहा जाता है।

लेकिन जब प्रिंट () विधि को test_obj और example_obj की तरह कहा जाता है, प्रिंट () Absclass विधि को कहा जाता है क्योंकि यह एक सार विधि नहीं है।

नोट: हम एक अमूर्त वर्ग को तत्काल नहीं कर सकते . यह त्रुटि का कारण बनता है।