【发布时间】:2011-01-11 02:09:18
【问题描述】:
我在实现namedtuple._replace() 时遇到了问题,所以我直接从文档中复制了代码:
Point = namedtuple('Point', 'x,y')
p = Point(x=11, y=22)
p._replace(x=33)
print p
我得到了:
Point(x=11, y=22)
代替:
Point(x=33, y=22)
如文档中所示。
我在 Windows 7 上使用 Python 2.6
发生了什么事?
【问题讨论】:
-
这与 str.replace() 的工作方式相同。字符串和命名元组都是不可变的,因此它们的替换方法会产生 new 值,同时保持旧值不变。您的问题的解决方案是将新结果保存到变量中。
-
很好的问题,如果没有其他原因,每个想要“修改”命名元组的人都会在某个时候绊倒。
标签: python namedtuple