什么是一个更好的替代namedtuples _replace?

Len*_*bro 8 python namedtuple

拿这个代码:

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

parts._replace works但由于它是一个强调的方法,它应该是内部的,而不是使用.还有其他选择吗?我不想这样做:

>>> parts = parts[:2] + ('/3.0'+parts.path,) + parts[3:]
Run Code Online (Sandbox Code Playgroud)

因为这使它成为一个普通的元组,而不是一个命名元组,并且做:

>>> parts = namedtuple(scheme=parts.scheme, netloc=parts.netloc, etc etc)
Run Code Online (Sandbox Code Playgroud)

有点愚蠢.:)

想法?

Ign*_*ams 20

namedtuple使用初始下划线开始的方法只是为了防止名称冲突.它们不应被视为仅供内部使用:

为防止与字段名称冲突,方法和属性名称以下划线开头.

  • 后缀很可能是一个更好的选择,尽管它不能与 rename=True 选项一起很好地工作。FWIW,namedtuple 代码在发布之前经过了广泛的审查和讨论。构建配方是社区的努力(请参阅http://code.activestate.com/recipes/500261-named-tuples/),并且它在 python-dev 上进行了进一步的修订和审查。 (2认同)