cha*_*rit 19 python iterable-unpacking
是否有内置函数/运算符可用于从字典中解压缩值并将其分配给实例变量?
这就是我打算做的事情:
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
Run Code Online (Sandbox Code Playgroud)
类似于字典的东西,update()
它从另一个字典加载值但是对于普通对象/类实例?
Jeh*_*iah 33
通过循环遍历d中的项目,还有另一种方法.这没有他们将被存储的相同的后果,但c.__dict__
并不总是如此.
d = {'bar': 456}
for key,value in d.items():
setattr(c,key,value)
Run Code Online (Sandbox Code Playgroud)
或者你可以写一个update
方法作为一部分,MyClass
以便c.update(d)
像你期望的那样工作.
def update(self,newdata):
for key,value in newdata.items():
setattr(self,key,value)
Run Code Online (Sandbox Code Playgroud)
看看setattr的帮助
Run Code Online (Sandbox Code Playgroud)setattr(...) setattr(object, name, value) Set a named attribute on an object; setattr(x, 'y', v) is equivalent to ''x.y = v''.
S.L*_*ott 30
你有没有尝试过
f.__dict__.update( b )
Run Code Online (Sandbox Code Playgroud)
?
另外,也许在dict的更新方法周围有一个包装器是好的风格:
def update(self, b):
self.__dict__.update(b)
Run Code Online (Sandbox Code Playgroud)
PS:很抱歉没有评论@ S.Lott的帖子,但我还没有代表.
归档时间: |
|
查看次数: |
16865 次 |
最近记录: |