ich Probleme namedtuple._replace()
aufweisen, wurde die Umsetzung, so kopierte ich den Code direkt aus der Dokumentation:Python: namedtuple._replace() funktioniert nicht wie descrbed in 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 im Dokument angezeigt wird.
Ich verwende Python 2.6 auf Windows 7
Was ist los?
Dies funktioniert genauso wie str.replace(). Sowohl Strings als auch benannte Tupel sind unveränderlich, daher erzeugen ihre Ersetzungsmethoden * neue * Werte, während der alte Wert unverändert bleibt. Die Lösung für Ihr Problem besteht darin, das neue Ergebnis in einer Variablen zu speichern. –
Große Frage, wenn aus irgendeinem anderen Grund jeder, der ein Nametuple "modifizieren" will, irgendwann darüber stolpern wird. – mbarkhau