有什么更好的替代namedtuples的_replace方法?

9 投票
1 回答
3238 浏览
提问于 2025-04-15 18:57

看这段代码:

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

parts._replace 可以用,但是因为它是一个带下划线的方法,所以它应该是内部使用的,不应该直接用。有没有其他的办法?我不想这样做:

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

因为那样就变成了普通的元组,而不是命名元组。而且这样做:

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

有点傻。:)

有什么好主意吗?

1 个回答

23

之所以namedtuple的方法前面会加一个下划线,是为了避免名字冲突。它们并不是说只能内部使用:

为了避免和字段名发生冲突,这些方法和属性的名字都以下划线开头。

撰写回答