什么是一个更好的选择一个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:
为了避免与字段名,方法冲突和属性名以下划线。
Ahaaaa ......... – 2010-02-06 12:51:55
据我所知,从来没有一个PEP的'namedtuple',在那里人们可以说,* *后面添加一个下划线会更合适(点菜'class_')刚刚避免这种误解。 – tzot 2010-02-06 20:32:23
后缀可能是更好的选择,尽管它不适用于重命名= True选项。 FWIW,在发布之前,对已命名的代码进行了广泛的审查和讨论。构建配方是一项社区工作(参见http://code.activestate.com/recipes/500261-named-tuples/),并对python-dev进行了进一步修订和审查。 – 2012-01-28 01:22:45