我已经定义了一个对象,我希望能够在循环中调用该对象的属性,但我不确定如何做到这一点。这是我写的(错误的)示例代码,试图表明我想做什么:
class my_data:
def __init__(self,a,b,c,d):
self.a = 'e'
self.b = 'f'
self.c = 'g'
self.d = 'h'
test=my_data('a','b','c','d')
#print(test.a)
#e
index=['a','b','c','d']
#what I want:
my_var = test.index[2]
#where index[2] is equivalent to c and thus my_var is 'g'
我得到的错误是:
AttributeError: 'my_data' object has no attribute 'index'
我理解,因为它正在寻找特定的属性索引,而不是数组索引的值[2],但我不知道如何解决这个问题。我需要它,因为我想在循环中使用它。
谢谢!
你可以这样做:
my_var = getattr(test, index[2])
# my_var = 'g'
python中的每个类也有默认的(但隐藏的)__getattribute__
和__getattr__
方法,用于处理获取类的属性。如果需要,您可以覆盖它们以定义一些自定义行为,但在这种情况下,您不需要这样做。