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

पायथन 3.x का सुपर() बिना तर्क के कैसे काम करता है, और संभावित नुकसान क्या हैं?

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

 How Does Python 3.x\'s Super() Work Without Arguments, and What Are the Potential Pitfalls?

पायथन 3.x का सुपर मैजिक: रहस्यों को उजागर करना

पायथन 3.x ने अपनी सुपर() विधि में एक आश्चर्यजनक मोड़ पेश किया, जिससे अनुमति मिली बिना तर्क के कॉल करता है। यह प्रतीत होता है कि अहानिकर परिवर्तन महत्वपूर्ण परिणाम और हुड के नीचे अंतर्निहित जादू को वहन करता है। नामकरण. इसमें एक विशेष

क्लास

सेल है जो मूल क्लास ऑब्जेक्ट को पुनः प्राप्त करता है, पिछले सुपर दृष्टिकोण को प्रभावित करने वाले रिबाइंडिंग के नुकसान से बचता है।

जादू के परिणाम

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

क्लास

को एक विधि के भीतर संदर्भित किया जाता है।

व्यावहारिक नुकसान

यह व्यवहार जोखिम पैदा कर सकता है बिना सोचे-समझे प्रोग्रामर:

सुपर() को रीबाइंड करने से अप्रत्याशित अपवाद हो सकते हैं।

सुपर(टाइप(सेल्फ), सेल्फ) या सुपर(सेल्फ.__क्लास__, सेल्फ) पर भरोसा करने से परिणाम हो सकते हैं किसी व्युत्पन्न वर्ग से बुलाए जाने पर अनंत पुनरावृत्ति में।

    दिलचस्प बात यह है कि सुपर() रीबाइंडिंग मुद्दों से प्रभावित एकमात्र पायथोनिक इकाई नहीं है। अन्य उदाहरणों में शामिल हैं:
  • यह
  • PyPy के RPython में (सुपर() के __class__ के समान)
अनबाउंड विधि ऑब्जेक्ट के माध्यम से एक्सेस किए गए इंस्टेंस तरीके (संभावित रूप से @ को तोड़ना) संपत्ति और @classmethod)

बिना डॉट नोटेशन के कॉल करने पर प्रिंट, ऑब्जेक्ट और सूची जैसे बिल्ट-इन

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

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

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

Copyright© 2022 湘ICP备2022001581号-3