对于Python中具有对象属性的循环

For loop with object's attributes in Python

我使用的是Python中的对象,我只想替换for循环中的属性以从对象中获取数据。这是我的代码:

1
2
3
4
5
def calculate_something(dictionaryWithObjects):
    for attribute in ['attr1', 'attr2', 'attr3']:
        dataA1, dataA2 = dictionaryWithObjects['Object1'].attribute
        dataB1, dataB2 = dictionaryWithObjects['Object2'].attribute
        dataC1, dataC2 = dictionaryWithObjects['Object3'].attribute

所以这或多或少是我想要的。之后我将使用这些数据进行计算。但它给出了一个错误,即对象没有名为".attribute"的属性。当然不是,我是想把里面的"ATTR1"换掉。

我做错什么了?


为了通过实例属性的名称访问它,您应该使用:getattr(object,name[,default]),例如:

1
dataA1, dataA2 = getattr(dictionaryWithObjects['Object1'], attribute)


您可以使用eval

1
data=eval('Object1.'+attribute)


尝试如下操作:

1
2
3
def calculate_something(dictionaryWithObjects):
    for attribute in ['attr1', 'attr2', 'attr3']:
        dataA1, dataA2 = dictionaryWithObjects['Object1'][attribute]