什么是一个更好的选择一个namedtuples _replace?

问题描述:

借此代码:什么是一个更好的选择一个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) 

是有点傻。 :)

想法?

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