numeros - Objeto de actualización de Python del diccionario
nombres de variables en python (3)
Has probado
f.__dict__.update( b )
?
¿Existe una función / operador incorporado que pueda usar para descomprimir valores de un diccionario y asignarlos a variables de instancia?
Esto es lo que pretendo hacer:
c = MyClass()
c.foo = 123
c.bar = 123
# c.foo == 123 and c.bar == 123
d = {''bar'': 456}
c.update(d)
# c.foo == 123 and c.bar == 456
¿Algo parecido a la update()
diccionario update()
que carga valores de otro diccionario, pero para instancia de objeto / clase simple?
también hay otra forma de hacerlo al recorrer los elementos en d. esto no tiene la misma consideración de que se almacenarán en c.__dict__
que no siempre es cierto.
d = {''bar'': 456}
for key,value in d.items():
setattr(c,key,value)
o podría escribir un método de update
como parte de MyClass
para que c.update(d)
funcione como esperaba.
def update(self,newdata):
for key,value in newdata:
setattr(self,key,value)
echa un vistazo a la ayuda para setattr
setattr(...) setattr(object, name, value) Set a named attribute on an object; setattr(x, ''y'', v) is equivalent to ''''x.y = v''''.
Además, tal vez sería un buen estilo tener un contenedor alrededor del método de actualización del dict:
def update(self, b):
self.__dict__.update(b)
PD: Perdón por no haber comentado en la publicación de @ S.Lott , pero todavía no tengo la representante.