我正在开发一个需要处理一堆相关变量的程序。我想将它们全部捆绑到一个类中,这样我就可以直观地访问它们了......
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
。
我可以从变量名列表中初始化实例变量吗?
答案 0 :(得分:0)
这是一个不好的方法,但你想要的功能是setattr
。
你可以做到
for item in cij.keys():
setattr(self, item, 0)
所以,是的,您可以从名称列表初始化实例变量。 在这种情况下,很难理解为什么你不会只使用字典。