我在实施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)

如图所示在doc。

我使用Python 2.6在Windows 7

这是怎么回事?

有帮助吗?

解决方案

是是的话,它的工作原理完全一样记录。

._replace收益的新namedtuple,它不会修改原始,所以你需要写:

p = p._replace(x=33)

请参阅这里: somenamedtuple._replace(kwargs)获得更多信息。

其他提示

一个元组是不可变的。 _replace()返回新的记录您的修改:

p = p._replace(x=33)

namedtuple._replace() 返回一个新的元组;原来不变。

在我看来好像namedtuple是不可变的,像它的祖先,元组。

>>> from collections import namedtuple
>>> Point = namedtuple('Point', 'x,y')
>>>
>>> p = Point(x=11, y=22)
>>>
>>> p._replace(x=33)
Point(x=33, y=22)
>>> print(p)
Point(x=11, y=22)
>>> p = p._replace(x=33)
>>> print(p)
Point(x=33, y=22)

NamedTuple._replace返回相同类型但具有改变值的新NamedTuple

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top