我是Python新手,但有一个问题:在我使用的软件包中,有一个命令可以通过以下方式调用:example.D1,example.D2,更改D后面的数字。
我想创建一个循环,以打印所有结果,其结果跟在D后面,从1到100。
我尝试过

for i in range(1, 100):
    print(example.Di)
错误是raise AttributeError("'*' has no attribute '%s'" % name) AttributeError: '*' has no attribute 'Di'如何返回此命令“loopable”?
希望我的描述清楚,
谢谢

最佳答案

您可以使用eval(不推荐),使用locals()访问局部变量(取决于上下文),或者最好使用getattr方法访问example的类实例变量:

for i in range(1, 100):
    print(getattr(example, 'D{0}'.format(i)))
如果要在不存在Di的情况下返回特定值,则可以将其作为默认返回值添加到getattrf.i。返回字符串'variable Di not found'
for i in range(1, 100):
    print(getattr(example, 'D{0}'.format(i), 'variable D{0} not found'.format(i)))

10-05 21:19
查看更多