"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन के मेथड रेजोल्यूशन सिस्टम में फ़ंक्शंस, अनबाउंड मेथड्स और बाउंड मेथड्स कैसे भिन्न हैं?

पायथन के मेथड रेजोल्यूशन सिस्टम में फ़ंक्शंस, अनबाउंड मेथड्स और बाउंड मेथड्स कैसे भिन्न हैं?

2024-11-10 को प्रकाशित
ब्राउज़ करें:701

How do Functions, Unbound Methods, and Bound Methods Differ in Python\'s Method Resolution System?

कार्यों की प्रकृति, अनबाउंड विधियों और बाउंड विधियों का अनावरण

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

इकाइयों को परिभाषित करना

  • फ़ंक्शन: डीफ़ स्टेटमेंट का उपयोग करके बनाए गए, फ़ंक्शंस किसी के साथ सीधे संबंध के बिना कोड की स्टैंडअलोन इकाइयाँ हैं क्लास.
  • अनबाउंड तरीके: जब कोई फ़ंक्शन क्लास परिभाषा का हिस्सा बन जाता है, तो यह एक अनबाउंड विधि में बदल जाता है। यह संक्रमण Python 2 में स्वचालित रूप से होता है लेकिन Python 3 में अप्रचलित है। स्वयं).
  • परिवर्तन और अभिगम्यता

फ़ंक्शन टू अनबाउंड मेथड:

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

वर्ग जागरूकता:

एक अनबाउंड विधि का ज्ञान रखती है यह जिस वर्ग से संबंधित है, जबकि फ़ंक्शंस और बाउंड तरीकों में इस जागरूकता का अभाव है। &&&]
  • समतुल्यता और उपयोग
  • पाइथॉन 2 और पायथन 3 दोनों में, निम्नलिखित अभिव्यक्तियाँ कार्यात्मक रूप से समतुल्य हैं:
  • f1(C()) सी.एफ1(सी()) C().f1()

किसी फ़ंक्शन को किसी इंस्टेंस से बाइंड करने से एक संशोधित संस्करण बनता है जहां पहला पैरामीटर स्वाभाविक रूप से दिए गए इंस्टेंस पर सेट होता है। अनिवार्य रूप से, यह बाध्य विधि निम्नलिखित वैकल्पिक रूपों के समान व्यवहार करती है:

lambda *args, **kwargs: f1(C(), *args, **kwargs) functools.partial(f1, C())

f1(C())
C.f1(C())
C().f1()

क्लास के एक पायथन 2 उदाहरण में अनबाउंड तरीकों के अनुरूप कोई प्रत्यक्ष विशेषता नहीं है, जो हैं इसके बजाय कक्षा की __dict__ विशेषता के माध्यम से पुनर्प्राप्ति योग्य है। हालाँकि, किसी उदाहरण पर एक अनबाउंड विधि तक पहुँचने के परिणामस्वरूप इसका एक बाउंड विधि में स्वचालित रूपांतरण होता है। आपको पायथन की विधि समाधान तंत्र का प्रभावी ढंग से उपयोग करने का अधिकार देता है। बाइंडिंग और परिवर्तन के तंत्र को समझना आपको ऑब्जेक्ट-ओरिएंटेड कोडिंग की जटिलताओं को आसानी से नेविगेट करने में सक्षम बनाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3