考慮我有以下的解釋:通過字典循環插入值對象
dic={}
dic["var1"]=val1
dic["var2"]=val2
現在我有一個包含兩個屬性的另一個對象:var1
和var2
。 我想運行對象的方法內的循環,如(僞代碼):
for key, value in dic
self.key=value
使self.var1=val2
和self.var2=val2
我怎樣才能實現它的蟒蛇?
梅厄
考慮我有以下的解釋:通過字典循環插入值對象
dic={}
dic["var1"]=val1
dic["var2"]=val2
現在我有一個包含兩個屬性的另一個對象:var1
和var2
。 我想運行對象的方法內的循環,如(僞代碼):
for key, value in dic
self.key=value
使self.var1=val2
和self.var2=val2
我怎樣才能實現它的蟒蛇?
梅厄
>>> class Obj(object):
... pass
...
>>> obj = Obj()
>>> for key, value in {'var1':5, 'var2':6}.iteritems():
... setattr(obj, key, value)
...
>>> obj.var1
5
>>> obj.var2
6
在這裏,我有義務這樣說:「爲什麼不使用的字典?」
您可以使用 「SETATTR」:
class Test:
var1 = "Cheese"
var2 = "Toast"
dic = {}
dic["var1"] = "NewCheese"
dic["var2"] = "NewToast"
oTest = Test()
for key in dic.keys():
setattr(oTest, key, dic[key])
print "Var1 = ", oTest.var1
print "Var2 = ", oTest.var2
#
# Result
#
# Var1 = NewCheese
# Var2 = NewToast
#
您可以更新內部__dict__屬性,該屬性是一個包含對象所有成員的字典。
class MyObj:
def __init__(self, member_dict):
self.__dict__.update(member_dict)
dic={}
dic["var1"]=val1
dic["var2"]=val2
obj = MyObj(dic)
print obj.var1
>>> val1
print obj.var2
>>> val2