以Python方式循环更新多个类变量的方法?

时间:2019-09-26 13:39:18

标签: python python-3.x

我想在循环中使用相似的名称更新类变量:

我有以下代码:

class Table:
    def __init__(self):
        pass

    acc_counter = 0
    acc0 = 0
    acc1 = 0
    acc2 = 0
    acc3 = 0
    acc4 = 0

我可以手动更新每个值:

Table.acc0 = 0
Table.acc1 = 1
Table.acc2 = 2
Table.acc3 = 3
Table.acc4 = 4

但是,我想知道是否可以循环执行此操作:

for i in range(5):
    print(getattr(Table, f"acc{i}"))
    #getattr(Table, f"acc{i}") = i

如果代码的最后一行未注释,则返回:“ SyntaxError:无法分配给函数调用”

2 个答案:

答案 0 :(得分:2)

您可以使用setattr函数:

for i in range(5):
    setattr(Table, f"acc{i}", i)

答案 1 :(得分:2)

使用setattr设置对象的属性值

for i in range(5):
    print(getattr(Table, f"acc{i}"))
    setattr(Table, f"acc{i}", i)