अगर मैं एक अजगर दुभाषिया में निम्न कोड चलाएँ:"वस्तु .__ dict__ वस्तु क्यों है .__ dict__" गलत?
>>> object.__dict__ is object.__dict__
False
परिणाम False
क्यों है?
अगर मैं एक अजगर दुभाषिया में निम्न कोड चलाएँ:"वस्तु .__ dict__ वस्तु क्यों है .__ dict__" गलत?
>>> object.__dict__ is object.__dict__
False
परिणाम False
क्यों है?
object.__dict__
, अन्य __dict__
रों के विपरीत, एक mappingproxy
वस्तु (अजगर 2 में एक dict_proxy
) देता है। ये फ्लाई पर बनाए गए हैं जब __dict__
अनुरोध किया गया है। इसलिए नतीजतन, जब भी आप object.__dict__
तक पहुंचते हैं तो आपको एक नई प्रॉक्सी मिलती है। वे सभी एक ही अंतर्निहित वस्तु को प्रॉक्सी करते हैं, लेकिन प्रॉक्सी हर समय एक ताजा है। यही कारण है कि आप दो समान नहीं प्राप्त कर सकते हैं।
कहा जा रहा है, '{' foo ':' bar '} {' foo ':' bar '}' 'गलत 'प्रतीत होता है, यह भी ... यह एक व्यापक श्रद्धा व्यवहार नहीं है, कुछ विशिष्ट नहीं है 'वस्तु .__ dict__'? – DreadPirateShawn
धन्यवाद, यह मैपिंगप्रैक्सी क्यों कैश नहीं किया जा सकता है और फिर पुन: उपयोग नहीं किया जा सकता है? – NathaneilCapital
@DreadPirateShawn ऐसा इसलिए है क्योंकि आप * दो अलग-अलग शब्दकोश * बना रहे हैं। 'डी = {'foo': 'bar'}; डी डी डी व्यवहार करेगा जैसा आप उम्मीद करते हैं। – jonrsharpe
क्योंकि आपको 'dict_proxy' ऑब्जेक्ट मिलता है, जिसे हर बार '__dict__' विशेषता तक पहुंचने के लिए फिर से बनाया जाता है और केवल' ऑब्जेक्ट 'के साथ गड़बड़ करने से रोकने के लिए केवल पढ़ने के लिए होता है। – jonrsharpe