शुद्धता के हित में किसी भी उदाहरण विशेषताओं को छोड़कर, अंतर्निहित विशेष विधि लुकअप आमतौर पर ऑब्जेक्ट के मेटाक्लास के
ऐसे__getattribute__()
विधि को भी छोड़ देता है।पाइथन में __getattribute__ को कौन से विशेष तरीकों से गुजरता है?__hash__
,__repr__
और__len__
रूप
The docs उल्लेख विशेष विधियों, और मैं अनुभव यह भी शामिल है पायथन 2.7 के लिए __iter__
से पता है।
an answer to a related question के शब्दों में:
"मैजिक
__methods__()
विशेष रूप से व्यवहार कर रहे हैं: वे आंतरिक रूप से करने के लिए आवंटित कर रहे हैं" उनके लुक-अप में तेजी लाने के प्रकार डेटा संरचना में स्लॉट ", और वे केवल इन में देखा जाता है स्लॉट्स। "
another question पर मेरा उत्तर सुधारने के लिए, मुझे यह जानने की ज़रूरत है: विशेष रूप से, हम किस तरीके से बात कर रहे हैं?
स्लॉट को कौन सी विधियां सौंपी गई हैं? –
मुझे लगता है कि सूचीबद्ध हर विधि [यहां] (http://docs.python.org/reference/datamodel.html#specialnames)। वैसे भी ध्यान रखें कि यह केवल तब लागू होता है जब आप "इसके वाक्यविन्यास" का उपयोग करके विधि को कॉल करते हैं। उदाहरण के लिए 'ए +5' '__getattribute__' को कॉल नहीं करेगा, जबकि' a .__ जोड़ें __ (5) '* * इसे कॉल करेगा। मूल रूप से '__getattribute__' को किसी भी विशेषता तक पहुंचने के लिए डॉट (' .') का उपयोग करने पर कॉल किया जाता है। – Bakuriu
@ बाकुरी: बहुत जानकारीपूर्ण, धन्यवाद। – porgarmingduod