Я испытывал затруднения при реализации 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)
как показан в документе.
Я использую Python 2.6 в Windows 7
Что продолжается?
Да, это делает, это работает точно так же, как документально.
._ Заменить
Возврат Новый NameDTuple, он не изменит оригинал, поэтому вам нужно написать это:
p = p._replace(x=33)
см. Здесь: SomenamedTuple._replace (Kwargs) для более Информация.
Крупный кортеж неизменно. _replace ()
Возвращает новый кортеж с вашими модификациями:
p = p._replace(x=33)
Мне кажется, что имя незыблемо, как его предшественник, кортеж.
>>> 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
того же типа, но с измененными значениями.
NamedTuple._replace ()
возвращает новый кортеж; Оригинал не изменился.