Django स्रोत कोड पढ़ना मैं this फ़ंक्शन पर आया था। यह block टैग के लिए कार्यान्वयन है।कक्षा * बाहर * से "निजी" पायथन विशेषता क्यों सेट करें?
मुझे क्या अच्छा लगता है कि वे एक चर दो प्रमुख अंडरस्कोर (__loaded_blocks
) के साथ से बाहर parser
वर्ग उदाहरण स्थापित कर रहे हैं (पार्सर Parser class का एक उदाहरण है) है। Django स्रोत कोड में एक त्वरित grep से पता चलता है कि स्ट्रिंग loaded_blocks
केवल यहां होती है।
अब मैंने पहले कभी भी पाइथन नाम-मैंगलिंग सुविधा का उपयोग नहीं किया है, लेकिन यह parser
की विशेषता को अपने आप से छुपाएगा! parser
विधि से इस विशेषता को पढ़ने के लिए आपको getattr(self, "__loaded_blocks")
का सहारा लेना होगा।
मैं सही सोच में हूँ यह सिर्फ एक अनपेक्षित और अप्रयुक्त पक्ष चुना विशेषता नाम का असर है? या क्या इसका गहरा उद्देश्य है?
आम तौर पर, आप ऐसा क्यों करना चाहते हैं?
संपादित करें: स्पष्ट करने के लिए, मैं पूरी तरह से पता है कि जब तक आप parser
की एक विधि से __loaded_blocks
विशेषता का उपयोग करने की कोशिश मत करो के रूप में, यह सिर्फ किसी भी अन्य विशेषता की तरह काम करेगा हूँ, और यह है कि वास्तव में एक उलझन में विशेषता नहीं है।
कोई प्रयोजन के उपभोक्ता के लिए "निजी" के रूप में इस के निशान, Django सिर्फ बदसूरत कोड है। – Keith