动态实例属性


问题内容

说我有一堂课:

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
>>>