2009-09-22 16 views
21

मैं hasattr में निर्मित कार्य करने के लिए स्रोत कोड देख और लाइनों कि मेरी रुचि भी खफा की एक जोड़ी देखा गया था:पाइथन गलत और सही पर संदर्भ संख्या क्यों रखता है?

Py_INCREF(Py_False); 
return Py_False; 

... 

Py_INCREF(Py_True); 
return Py_True; 

नहीं कर रहे हैं Py_False और Py_True वैश्विक मूल्यों? बेहद जिज्ञासा से बाहर, पाइथन इन चर के लिए संदर्भ गणना क्यों रख रहा है?

+0

-1: यह आपके पास वर्तमान में मौजूद किसी भी प्रोग्रामिंग समस्या को कैसे हल करता है? –

+9

@ S.Lott जब यहां प्रश्नों के लिए विशेष कंक्रीट प्रोग्रामिंग समस्याओं से संबंधित होना है। – Triptych

+17

मुझे वर्तमान में समस्या है कि मुझे Py_True और Py_False पर संदर्भ गणना बढ़ाने की आवश्यकता को समझ में नहीं आता है। –

उत्तर

21

यह ऑब्जेक्ट हैंडलिंग वर्दी बनाने के लिए है। अगर मैं सी कोड लिख रहा हूं जो किसी फ़ंक्शन से रिटर्न वैल्यू को संभालता है, तो मुझे उस ऑब्जेक्ट पर रेफरेंस गिनती बढ़ाना और घटाना होगा। अगर समारोह मुझे सच करता है, तो मैं यह देखने के लिए जांचना नहीं चाहता कि यह उन विशेष वस्तुओं में से एक है, यह जानने के लिए कि क्या इसकी संदर्भ गणना में हेरफेर करना है या नहीं। मैं सभी वस्तुओं को समान रूप से इलाज कर सकता हूं।

सही और गलत (और कोई नहीं, बीटीडब्ल्यू) का इलाज करके अन्य सभी वस्तुओं के समान, सी कोड पूरे समय में बहुत आसान है।

+0

इसके अतिरिक्त: टी एफ और कोई भी वास्तव में वस्तुओं नहीं हैं। उनके पास कोई तरीका नहीं है। http://docs.python.org/c-api/bool.html – Pod

+1

वे तकनीकी रूप से विधियां हैं। प्रत्येक वस्तु में विधियां होती हैं। – ironfroggy

+4

लेन (डीआईआर (ट्रू)) 54 - चॉक * पूर्ण * तरीकों का है। वे सिर्फ सभी विशेष (डबल अंडरस्कोर-नामित) हैं। –

संबंधित मुद्दे