动态实例属性
问题内容:
说我有一堂课:
class Foo(object):
def __init__(self,d):
self.d=d
d={'a':1,'b':2}
inst=Foo(d)
inst.d
Out[315]: {'a': 1, 'b': 2}
有没有一种方法可以动态创建n个属性,其中每个属性都是dict键,因此inst.a
将返回1
等等。
问题答案:
用途setattr()
:
>>> class foo(object):
def __init__(self, d):
self.d = d
for x in self.d:
setattr(self, x, self.d[x])
>>> d = {'a': 1, 'b': 2}
>>> l = foo(d)
>>> l.d
{'a': 1, 'b': 2}
>>> l.a
1
>>> l.b
2
>>>