पायथन में, self
नाम विशेष नहीं है। यह पैरामीटर नाम के लिए सिर्फ एक सम्मेलन है, यही कारण है कि पैरामीटर __init__
में है। (वास्तव में, __init__
नहीं बहुत ही खास या तो है, और विशेष रूप से यह नहीं वास्तव में वस्तु बनाने ... कि एक लंबे समय तक कहानी है करता है)
C("abc").process()
एक C
उदाहरण बनाता है, C
कक्षा में process
विधि को देखता है, और उस पैरामीटर को C
उदाहरण के साथ पहले पैरामीटर के रूप में कॉल करता है। तो यदि आप इसे प्रदान करते हैं तो यह self
पैरामीटर में समाप्त हो जाएगा।
भले ही आपके पास वह पैरामीटर था, भले ही आपको def process(self, formatting = self.formatting)
जैसे कुछ लिखने की अनुमति नहीं दी जाएगी, क्योंकि self
उस बिंदु पर नहीं है जहां आप डिफ़ॉल्ट मान सेट करते हैं। पायथन में, पैरामीटर के लिए डिफ़ॉल्ट मान गणना की जाती है जब फ़ंक्शन संकलित होता है, और फ़ंक्शन पर "अटक" होता है। (यही कारण है कि, यदि आप []
जैसे डिफ़ॉल्ट का उपयोग करते हैं, तो उस सूची में फ़ंक्शन में कॉल के बीच परिवर्तन याद आएंगे।)
मैं यह काम कैसे कर सकता हूं?
पारंपरिक तरीका None
डिफ़ॉल्ट रूप से उपयोग करना है, और उस मान की जांच करें और इसे फ़ंक्शन के अंदर प्रतिस्थापित करें।आपको लगता है कि उद्देश्य के लिए एक विशेष मूल्य बनाने के लिए यह थोड़ा सुरक्षित है (object
इंस्टेंस की आवश्यकता है, जब तक आप इसे छिपाते हैं ताकि कॉलिंग कोड उसी उदाहरण का उपयोग न करे) None
के बजाय। किसी भी तरह से, आपको is
के साथ इस मान की जांच करनी चाहिए, ==
नहीं।
स्रोत
2011-11-15 05:45:48
प्रारूप में प्रारूप का उपयोग नहीं करते हैं, क्योंकि यह पाइथन में अंतर्निहित फ़ंक्शन है। – Yajushi
'प्रक्रिया विधि' में 'स्वयं' की गलती को संपादित करना –