Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过for循环调用类的属性会导致错误_Python_Python 3.x - Fatal编程技术网

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

Python 通过for循环调用类的属性会导致错误,python,python-3.x,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',

下面的代码

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))

有人能解释一下原因吗?

您的第一个示例获得了
ac
att
属性,该属性不存在。变量不用于解析属性名称


调用
getattr
时,将变量传递给能够动态读取属性的Python函数。因为变量在这里是一个参数,所以它被解析。

您的第一个示例获得了
ac
att
属性,该属性不存在。变量不用于解析属性名称

调用
getattr
时,将变量传递给能够动态读取属性的Python函数。因为变量在这里是一个参数,所以它被解析了