2010-02-06 54 views
7

藉此代碼:什麼是一個更好的選擇一個namedtuples _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 ......... – 2010-02-06 12:51:55

+0

據我所知,從來沒有一個PEP的'namedtuple',在那裏人們可以說,* *後面添加一個下劃線會更合適(點菜'class_')剛剛避免這種誤解。 – tzot 2010-02-06 20:32:23

+1

後綴可能是更好的選擇,儘管它不適用於重命名= True選項。 FWIW,在發佈之前,對已命名的代碼進行了廣泛的審查和討論。構建配方是一項社區工作(參見http://code.activestate.com/recipes/500261-named-tuples/),並對python-dev進行了進一步修訂和審查。 – 2012-01-28 01:22:45

相關問題