namedtuple._replace() funktioniert nicht wie in der Dokumentation beschrieben
Ich Schwierigkeiten bei der Umsetzung namedtuple._replace()
, also kopierte ich den code direkt aus der Dokumentation:
Point = namedtuple('Point', 'x,y')
p = Point(x=11, y=22)
p._replace(x=33)
print p
und ich bekam:
Point(x=11, y=22)
statt:
Point(x=33, y=22)
wie gezeigt in der doc.
Ich bin mit Python 2.6 auf Windows 7
Was ist Los?
- Dies funktioniert auf die gleiche Weise, wie str.replace() funktioniert. Streicher und benannte Tupel sind unveränderlich, so dass Ihre Ersatz-Methoden produzieren neue Werte, wobei der alte Wert unverändert. Die Lösung für Ihr problem ist, speichern Sie das neue Ergebnis auf eine variable.
- Gute Frage, wenn aus keinem anderen Grund als dem, dass jeder Wunsch der "ändern" eine namedtuple geht die Reise über das irgendwann.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es funktioniert, es funktioniert genau wie beschrieben.
._replace
gibt einen neuen namedtuple, es ändert nicht die ursprüngliche, so müssen Sie dies schreiben:Siehe hier: somenamedtuple._replace(kwargs) für weitere Informationen.
Einem Tupel unveränderlich ist.
_replace()
gibt ein neues Tupel mit deinen Modifikationen:namedtuple._replace()
gibt ein neues Tupel, das original ist unverändert.Sieht es für mich so, als ob namedtuple unveränderlich ist, wie sein Urahn, Tupel.
NamedTuple._replace
gibt ein neuesNamedTuple
des gleichen Typs, aber mit Werten geändert.s='the quick brown fox'; s=s.replace('quick', 'slow')