python - pickle.loads does not return the same data dumped -


पॉलिसी मॉड्यूल मेरे द्वारा बनाई गई एक क्लास है

decomposed_module [स्विच] [बंदरगाह] module.install () मॉड्यूल [new.name] = मॉड्यूल प्रिंट 'डंप के लिए नीति' प्रिंट मॉड्यूल [new.name] .isInstalled () प्रिंट मॉड्यूल [new.name] .name प्रिंट मॉड्यूल [ new.name] .डोमेन प्रिंट मॉड्यूल [new.name] .अनुप्रयोग प्रिंट मॉड्यूल [new.name]। पॉलिसी प्रिंट '\ n' msg = पिकेल डंप्स (मॉड्यूल [नया। नाम], - 1) एक्स = पिकेल.लोड (msg) प्रिंट 'पॉलिसी लोड' प्रिंट एक्स। इंस्टॉल किया गया () प्रिंट x.name प्रिंट x.domain print x.action प्रिंट x.policy प्रिंट '\ n'

यह वही है मुद्रित: <प्री> ट्रॉफी टू डंप ट्रू रूटिंग मैच: ('dstip', 10.0.0.1) समानांतर: क्रमिक: मैच: ('स्विच', 2) ('dstip', 10.0.0.2) fwd 1 अनुक्रमिक: मैच: ('स्विच', 2) ('dstip', 10.0.0.3) fwd 2 अनुक्रमिक: मैच: ('dstip', 10.0.0.1) समानांतर: क्रमिक: मैच: ('स्विच', 2) ('dstip', 10.0.0.2) एफडब्ल्यूडी 1 अनुक्रमिक: मैच: ('स्विच', 2) ('dstip', 10.0.0.3) एफडब्ल्यूड 2 पी ओलिक्सी लोडेड ट्रू रूटिंग मैच: ('dstip', 10.0.0.1) पहचान ड्रॉप

अच्छी तरह से ध्यान दें : मैच, अनुक्रमिक, एफडब्ल्यूडी और समानांतर अन्य वर्गों के उदाहरण हैं ।

प्रत्येक वर्ग के लिए, मैं निम्नलिखित के रूप में सेटस्टेट और getstate विधियां सेट करता हूं:

  def __getstate __ (आत्म ): odict = self .__ dict __. copy () # dict की प्रतिलिपि बनाने के बाद से हम इसे बदलते हैं odict def __setstate __ (आत्म, dict): स्वयं .__ dict __। अद्यतन (dict)   

ऐसा लगता है कि समस्या यहां है:

  वर्ग अनुक्रमिक (कॉम्बिनेटर पॉलिसी): def __new __ (आत्म, नीतियों = []): यदि लेन (नीतियां) == 0: वापसी पहचान और वापसी: rv = super ( अनुक्रमिक, स्वयं) .__ नया __ (अनुक्रमिक, नीतियां) आरवी .__ init __ (नीतियां) वापस आर.वी.   

और यहां:

  वर्ग समानांतर (कॉम्बिनेटर पॉलिसी): def __new __ (आत्म, नीतियों = []): # Hackety हैक। अगर लेन (नीतियों) == 0: वापसी ड्रॉप अन्य: आरवी = सुपर (समानांतर, स्वयं) .__ नया __ (समानांतर, नीतियों) आर.वी. .__ init __ (नीतियां) वापस आर.वी.   

क्योंकि मैं हमेशा अनुक्रमिक के बजाय एक समानांतर उदाहरण के बजाय ड्रॉप और पहचान प्राप्त करें यह सेटडेट विधि की तरह नया विधि को रिक्त सूची से गुज़रता है।

मुझे स्वयं का समाधान मिला।

मैं समानांतर और अनुक्रमिक दोनों में getnewargs विधियों को परिभाषित करने में भूल गया < / em> वर्ग।

अधिक जानकारी।

Comments

Popular posts from this blog

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -

jasper reports - How to center align barcode using jasperreports and barcode4j -

django - CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False -