在for循环中创建实例变量

时间:2015-10-09 20:33:07

标签: python python-2.7

我正在开发一个需要处理一堆相关变量的程序。我想将它们全部捆绑到一个类中,这样我就可以直观地访问它们了......

class transition():
...

t1 = transition(stuff_to_initialize)
retrieve_that_variable = t1.that_variable_in_initialized_stuff 

但我希望能够从for循环声明我的实例变量:

class transition(object):
    ''' instance of a transition includes...
    '''
    # order convention for uncertainty terms Cij
    __order = {'c11': 1, 'c22': 2, 'c33': 3, 'c12': 4, 'c13': 5, 'c23': 6}
    __vector = {'Rx': 0.0, 'Ry': 0.0, 'Rz': 0.0}


    def __init__(self, cij=__order, vector=__vector):
        # Things that a transition instance must specify
        self.layer_type = 0

        for item in cij.keys():
            self.item = 0           
        for item in vector.keys():
            self.item = 0

但在此示例中,在初始化transition的实例后,我只有一个实例变量transition.item

我可以从变量名列表中初始化实例变量吗?

1 个答案:

答案 0 :(得分:0)

这是一个不好的方法,但你想要的功能是setattr。 你可以做到

for item in cij.keys():
    setattr(self, item, 0)

所以,是的,您可以从名称列表初始化实例变量。 在这种情况下,很难理解为什么你不会只使用字典。