documentation for Pickle विशेष रूप से कहते हैं:पिकल कॉलिंग क्यों नहीं है __new__ प्रलेखन की तरह कहते हैं?
एक नई शैली वर्ग सी के उदाहरण का उपयोग कर बनाई गई हैं:
obj = C.__new__(C, *args)
इस का लाभ लेने के प्रयास कर रहा है, मैं एक सिंगलटन कोई उदाहरण के साथ जिम्मेदार बताते हैं बनाया है या विधियां:
class ZeroResultSentinel(object):
instance = None
def __new__(cls, *args):
if not cls.instance:
cls.instance = super(ZeroResultSentinel, cls).__new__(cls, *args)
return cls.instance
(इस वर्ग का उपयोग कैशिंग परत में किया जाता है ताकि परिणाम नतीजे न हो एम कैश में कुछ नहीं।)
सिंगलटन बहुत अच्छा काम करता है (ZeroResultSentinel()
पर प्रत्येक कॉल मेमोरी में एक ही उदाहरण में परिणाम देता है, और ZeroResultSentinel() == ZeroResultSentinel()
True
का मूल्यांकन करता है)। और मैं अचार और त्रुटियों के बिना उदाहरण को अनपिक कर सकता हूं। हालांकि, जब मैं इसे अनपिक करता हूं, तो मुझे एक अलग उदाहरण मिलता है। तो मैंने __new__
के भीतर ब्रेकपॉइंट रखा। जब भी मैं ZeroResultSentinel()
पर कॉल करता हूं तो मैंने ब्रेकपॉइंट मारा, लेकिन जब मैं एक मसालेदार ZeroResultSentinel
को अनपिक करता हूं तो मैं ब्रेकपॉइंट नहीं मारता। यह दस्तावेज़ीकरण के प्रत्यक्ष विरोधाभास में है। तो क्या मैं कुछ गलत कर रहा हूं, या दस्तावेज गलत है?
आप कौन सा अचार प्रोटोकॉल निर्दिष्ट कर रहे हैं? – user2357112