我有这本词典:
{"id":3,"name":"MySQL","description":"MySQL Database Server - Fedora 21 - medium","image":"","flavor":""}
我有这个对象:
class Record():
id = None
name = None
description = None
image = None
flavor = None
如何将字典中的值分配给相应的类字段?
答案 0 :(得分:3)
将dict对象作为 init 函数的参数:
class Record(object):
def __init__(self,record_dict):
try:
self.id = record_dict['id']
self.name = record_dict['name']
self.description = record_dict['description']
self.image = record_dict['image']
self.flavor = record_dict['flavor']
except KeyError:
print 'KeyError'
def get_name(self):
return self.name
adict = {"id":3,"name":"MySQL","description":"MySQL Database Server - Fedora 21 - medium","image":"","flavor":""}
one_obj = Record(adict)
print one_obj
print one_obj.get_name()
输出:
<__main__.Record object at 0x022E4C90>
MySQL
适合我...
答案 1 :(得分:2)
你可能想要这样的东西:
class Record:
def __init__(self, myDict):
self.id = myDict[“id”]
self.name = myDict[“name”]
self.description = myDict[“description”]
self.image = myDict[“image”]
self.flavor = myDict[“flavor”]
并称之为:
rec = Record(myDict)
请参阅here以了解类和实例变量之间的区别。
长话短说,类变量对于类的每个实例都有一个值,而实例变量值对每个实例都是唯一的。
类变量的定义如下:
class myClass:
Classvar = ‘something’
实例变量的定义如下:
class myClass:
def __init__():
Self.instanceVar = ‘something else’
答案 2 :(得分:2)
这已在这里得到解答: Convert Python dict to object?
我最喜欢的方法是这个:x.__dict__.update(d)
答案 3 :(得分:1)
您可以按照以下方式分配它们,假设您的词典名称为input
id = input['id']
name = input['name']
description = input['description']
image = input['image']
flavor = input['flavor']
答案 4 :(得分:1)
尝试使用此方法获取对象的属性:
r = Record()
attributes = [i for i in dir(r) if not i.startswith('_')]
基本上,有一堆背景属性包含一堆下划线。 dir
方法获取所有属性,我们创建一个我们想要的列表。此时:
# attributes = ['count', 'description', 'flavor', 'id', 'image', 'index', 'name']
现在我们使用__setattr__
根据my_dict
for i in attributes:
r.__setattr__(i, my_dict[i])
查看在线运行的代码here。
答案 5 :(得分:0)
创建记录时,传入字典。然后将键映射到值。
答案 6 :(得分:0)
另一种简单方法,请参阅代码here
r = Record()
for k, v in my_dict.items():
exec('r.' + k + '="' + str(v) + '"')