2010-02-06 19 views
7

इस कोड डालें:नामित उपन्यास _replace के लिए एक अच्छा विकल्प क्या है?

>>> import urlparse 
>>> parts = urlparse.urlparse('http://docs.python.org/library/') 
>>> parts = parts._replace(path='/3.0'+parts.path) 

parts._replace works लेकिन के रूप में यह एक रेखांकित विधि है, यह आंतरिक होना चाहिए है, और उपयोग नहीं। क्या कोई विकल्प है? मुझे क्या करना नहीं चाहते:

>>> parts = parts[:2] + ('/3.0'+parts.path,) + parts[3:] 

कि यह बनाता है क्योंकि एक साधारण टपल, और नहीं एक namedtuple, और कर:

>>> parts = namedtuple(scheme=parts.scheme, netloc=parts.netloc, etc etc) 

थोड़े बेवकूफ है। :)

विचार?

उत्तर

19

namedtuple के शुरुआती अंडरस्कोर के साथ शुरू करने के कारण केवल नाम टकराव को रोकने के लिए हैं। वे should not be considered to be for internal use only:

फील्ड नामों के साथ संघर्ष को रोकने के लिए, विधि और विशेषता नाम अंडरस्कोर से शुरू होते हैं।

+0

Ahaaaa ......... –

+0

AFAIK वहाँ एक पीईपी 'namedtuple' है, जहां एक बहस कर सकते है कि * प्रत्यय लगाना * एक अंडरस्कोर अधिक उचित होगा (ए ला' class_') बस के लिए कभी नहीं था ऐसी गलतफहमी से बचें। – tzot

+1

प्रत्यय एक बेहतर विकल्प हो सकता है हालांकि यह नाम = सही विकल्प के साथ अच्छी तरह से काम नहीं करेगा। एफडब्ल्यूआईडब्ल्यू, नामित कोड को व्यापक रूप से समीक्षा और रिलीज से पहले चर्चा की गई थी। नुस्खा बनाना एक सामुदायिक प्रयास था (http://code.activestate.com/recipes/500261-named-tuples/ देखें) और इसमें पाइथन-देव पर और संशोधन और समीक्षा हुई। –

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