如文档中描述namedtuple._replace()不工作
-
24-09-2019 - |
题
我在实施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)
其他提示
一个元组是不可变的。 _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
。
不隶属于 StackOverflow