python - for循环调用类属性报错

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

谁能解释一下为什么?

最佳答案

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

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

关于python - for循环调用类属性报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859842/

相关文章:

Python:如何区分继承的方法

python - 我怎样才能在python中杀死一个线程

python - 你如何在 .py 文件上使用 %timeit?

python-3.x - FFMpeg ZeroMQ 过滤器不久后停止工作

python - AttributeError Python 速成类(class)

python - 计算数组中特定字母的数量

python - 无法更改 matplotlib 中的默认颜色图

python - 无法访问 python 3 中的(嵌套)枚举类型(proto3)

python - 如何应用哈希算法而不是 for 循环来降低 python 中的时间复杂度?

python - 由 += in ternany 引起的无效语法