Str对象没有属性“add”

时间:2015-05-12 10:54:10

标签: python

有人可以帮我解决这个问题:

@login_required
def job(request):

    if request.method == 'POST':

        form = JobForm(request.POST)

        if form.is_valid():
            job_record = form.save(commit=False)
            job_record = form.save(commit=False)
            job_record.user = request.user
            job_record.save()
            return redirect('jobs:list')
    else:
        form = JobForm()

    return render(request, 'jobs/form.html', {'form': form})

1 个答案:

答案 0 :(得分:4)

您为operator名称分配了一个字符串:

operator = randomOp[0]

您现在正在屏蔽operator模块。不要重复使用这样的名称,因为for循环operator.add的下一次迭代现在尝试在该字符串上查找add属性(因此{{1}之一无论是随机选择的第一次迭代,都是,'+''-'

您还直接导入了3个功能:

'*'

所以一个简单的解决方案是使用这3个名称而不是引用模块上的函数:

import operator
from operator import add, sub, mul

我使用元组而不是列表(因为更改代码中的ops = (("+", add), ("-", sub), ("*", mul)) 序列可能是一个错误)。您也可以移动ops循环的 out ;每次迭代重建它都没什么意义。