namedtuple. _ замена () не работает, как описано в документации

Я испытывал затруднения при реализации 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

Что продолжается?

41
задан Bhargav Rao 9 March 2019 в 21:41
поделиться

4 ответа

Да, это делает, это работает точно так же, как документально.

._ Заменить Возврат Новый NameDTuple, он не изменит оригинал, поэтому вам нужно написать это:

p = p._replace(x=33)

см. Здесь: SomenamedTuple._replace (Kwargs) для более Информация.

91
ответ дан 27 November 2019 в 00:12
поделиться

Крупный кортеж неизменно. _replace () Возвращает новый кортеж с вашими модификациями:

p = p._replace(x=33)
16
ответ дан 27 November 2019 в 00:12
поделиться

Мне кажется, что имя незыблемо, как его предшественник, кортеж.

>>> 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 того же типа, но с измененными значениями.

6
ответ дан 27 November 2019 в 00:12
поделиться

NamedTuple._replace () возвращает новый кортеж; Оригинал не изменился.

11
ответ дан 27 November 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: