我是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
的情况下返回特定值,则可以将其作为默认返回值添加到getattr
f.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)))