La libreria standard Python offre qualcosa di simile alla funzione di sostituzione personalizzata qui sotto? Posso inserire questo nel mio modulo * utils, ma preferisco usare un'implementazione di libreria standard. Inoltre, questo esempio dovrebbe essere servito da un namedtuple, che ha già _replace, ma ho bisogno della stessa funzione per altre classi nel mio progetto.
from copy import copy
class cab(object):
a = None
b = None
def __init__(self, a, b):
self.a = a
self.b = b
def __repr__(self):
return "cab(a=%s, b=%s)" % (self.a, self.b)
# Does not modify source. Creates a copy with the specified modified fields.
def replace(source, **kwargs):
result = copy(source)
for key in kwargs:
setattr(result, key, kwargs[key])
return result
v1 = cab(3,4)
v2 = replace(v1, a=100)
v3 = replace(v1, b=100)