基本上,我想要一个
像{ "a":"bar", "b":"blah", "c":"abc", "d":"nada" }
并使用它来设置与字典中的键同名的变量(在Object中)。
class Foo(object)
{
self.a = ""
self.b = ""
self.c = ""
}
所以最后self.a =“bar”,self.b =“blah”等......(并忽略键“d”)
有什么想法吗?
答案 0 :(得分:5)
将class
语句翻译为Python,
class Foo(object):
def __init__(self):
self.a = self.b = self.c = ''
def fromdict(self, d):
for k in d:
if hasattr(self, k):
setattr(self, k, d[k])
fromdict
方法似乎具有您请求的功能。
答案 1 :(得分:3)
class Foo(object):
a, b, c = "", "", ""
foo = Foo()
_dict = { "a":"bar", "b":"blah", "c":"abc", "d":"nada" }
for k,v in _dict.iteritems():
if hasattr(foo, k):
setattr(foo, k, v)
答案 2 :(得分:2)
另一种选择是使用参数解包:
class Foo(object):
def __init__(self, a='', b='', c='', **kwargs)
self.a = a
self.b = b
self.c = c
d = { "a":"bar", "b":"blah", "c":"abc", "d":"nada" }
f = Foo(**d)