通过for循环调用类的属性会导致错误

时间:2019-11-14 15:04:05

标签: python python-3.x

下面的代码

class attsClass():
    def __init__(self,aw,ax,ay,az):
        self.aw = aw
        self.ax = ax
        self.ay = ay
        self.az = az
ac = attsClass('W','X','Y','Z')
ac.ax

在这里我得到的结果是'X',但是如果我像下面这样调用,则会收到错误消息

att_names = ['aw','ax','ay','az']
for att in att_names:
    print(ac.att)

在这里我无法访问属性

只有这样我才能访问它

att_names = ['ax','ay','az']
for att in att_names:
    print(att, getattr(ac, att))

有人可以解释为什么吗?

1 个答案:

答案 0 :(得分:4)

您的第一个示例获取了att的{​​{1}}属性,该属性不存在。变量不用于解析属性名称。

调用ac时,您会将变量传递给能够动态读取属性的Python函数。由于此变量是此处的参数,因此可以解决。

相关问题