2011-01-10 24 views
19

पाइथन 2.6 में MutableString कक्षा को बहिष्कृत क्यों किया गया था;
और इसे पायथन 3 में क्यों हटा दिया गया था?पाइथन में MutableString को बहिष्कृत क्यों किया जाता है?

+0

"इस वर्ग का मुख्य उद्देश्य विरासत के लिए एक शैक्षणिक उदाहरण के रूप में कार्य करना है ..." –

+0

संरक्षित क्योंकि मैंने अभी तक एक और चर्चा के संबंध में मेटा पर इस से जुड़ा हुआ है। मूल रूप से पूछे जाने पर इसे संरक्षित करना। –

उत्तर

26

MutableString कक्षा शैक्षणिक होने के लिए थी, और वास्तविक कार्यक्रमों में उपयोग नहीं किया जाना था। यदि आप कार्यान्वयन को देखते हैं, तो आप देखेंगे कि आप वास्तव में एक गंभीर अनुप्रयोग में इसका उपयोग नहीं कर सकते हैं जो म्यूटेबल तारों की आवश्यकता है।

यदि आपको उत्परिवर्तनीय बाइटिंग की आवश्यकता है, तो आप bytearray का उपयोग करने पर विचार कर सकते हैं जो कि Python 2.6 और 3.x में उपलब्ध है। कार्यान्वयन हर बार जब आप पुराने को संशोधित करते हैं तो नए तार नहीं बनाते हैं, इसलिए यह अधिक तेज़ और प्रयोग योग्य है। यह बफर प्रोटोकॉल को सही ढंग से भी समर्थन करता है ताकि इसे व्यावहारिक रूप से हर जगह सामान्य बाइटस्ट्रिंग के स्थान पर उपयोग किया जा सके।

तुम सच में, सूचकांक द्वारा एक एकल स्ट्रिंग के कई संशोधनों क्या करने जा रहा नहीं कर रहे हैं एक नया बनाने (str.replace, str.format और re.sub के माध्यम से उदाहरण के लिए) आप सूट चाहिए द्वारा एक सामान्य स्ट्रिंग को संशोधित।

कोई परिवर्तनशील यूनिकोड तार, क्योंकि यह एक असामान्य आवेदन माना जाता है कर रहे हैं, लेकिन आप हमेशा __unicode__ (या __str__ अजगर 3 के लिए) और अपने कस्टम अनुक्रम प्रकार पर encode तरीकों को लागू कर सकते एक अनुकरण करने के लिए।

5

मुझे अनुमान है कि तारों को उत्परिवर्तनीय नहीं माना जाता है। प्राथमिक उद्देश्य "शैक्षणिक" था, आखिरकार। यदि आपको तारों को म्यूट करने की आवश्यकता है, तो स्ट्रिंग्स की सूची या StringIO का उपयोग करें।

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