2008-09-29 6 views
14

मैं समझता हूं कि ये विधियां पिकलिंग/अनपिक्लिंग के लिए हैं और इन्हें अंतर्निहित फ़ंक्शन को कम करने का कोई संबंध नहीं है, लेकिन 2 के बीच क्या अंतर है और हमें दोनों की आवश्यकता क्यों है?__reduce__ और __reduce_ex__ के बीच क्या अंतर है?

उत्तर

21

The docs का कहना है कि

तो अचार समय __reduce__() पर प्रदान की जाती है, कोई तर्कों के साथ कॉल किया जाएगा, और इसे वापस करना होगा या तो एक स्ट्रिंग या एक टपल।

दूसरी ओर,

यह कभी कभी प्रोटोकॉल संस्करण पता करने के लिए उपयोगी होता है जब __reduce__ को लागू करने। यह __reduce_ex__ नामक एक विधि को __reduce__ के बजाय कार्यान्वित किया जा सकता है। __reduce_ex__, जब यह मौजूद है, __reduce__ से अधिक प्राथमिकता में कहा जाता है (यदि आप अभी भी पीछे की ओर संगतता के लिए __reduce__ प्रदान कर सकता है)। __reduce_ex__ विधि को एकल पूर्णांक तर्क, प्रोटोकॉल संस्करण के साथ बुलाया जाएगा।

मनोरंजक ओर, Guido says यह एक ऐसा क्षेत्र है जो साफ किया जा सकता है कि।

+0

धन्यवाद, जॉन, पाठ को साफ करने के लिए! :) –

4

__reduce_ex__ क्या __reduce__ होना चाहिए था लेकिन कभी नहीं बनना चाहिए था। __reduce_ex____reduce__ जैसे काम करता है लेकिन अचार प्रोटोकॉल पारित किया जाता है।

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