python:python中的连接变量

Mar*_*tin -1 python python-2.7 python-3.x

我有3个 variable

print(obj.col1_expense.text) #test1
print(obj.col2_expense.text) #test2
print(obj.col3_expense.text) #test3
Run Code Online (Sandbox Code Playgroud)

如何打印动态?现在我想这样做

    for x in range(1, 4):
        print("obj.col"+str(x)+"_expense".text)
Run Code Online (Sandbox Code Playgroud)

但它给出了错误.

AttributeError: 'str' object has no attribute 'text'
Run Code Online (Sandbox Code Playgroud)

Cri*_*ati 5

你可以使用[Python]:getattr(object,name [,default]):

for x in range(1, 4):
    print(getattr(obj, "col{}_expense".format(x)).text)
Run Code Online (Sandbox Code Playgroud)

或者,为了确保AttributeError在弄乱索引时你不会得到,你可以替换print为这个(不那么容易阅读)的表格:

print(getattr(getattr(obj, "col{}_expense".format(x), None), "text", None))
Run Code Online (Sandbox Code Playgroud)