python试图将列表作为变量传入函数TypeError:';int';对象是不可编辑的

python试图将列表作为变量传入函数TypeError:';int';对象是不可编辑的,python,Python,我试图将一个列表作为变量(var1)传入,但我一直得到TypeError:“int”对象不可iterable。所以我添加了一个列表,我想我需要让它迭代,以便求和。它不起作用,我不确定类型错误的确切含义,如果它不意味着我需要遍历var1中的列表。splat工作,它将元组转换为列表,然后对列表求和。对于给定的列表var1,它就是不起作用 class MathDojo(object): def __init__(self): self.count = 0

我试图将一个列表作为变量(var1)传入,但我一直得到TypeError:“int”对象不可iterable。所以我添加了一个列表,我想我需要让它迭代,以便求和。它不起作用,我不确定类型错误的确切含义,如果它不意味着我需要遍历var1中的列表。splat工作,它将元组转换为列表,然后对列表求和。对于给定的列表var1,它就是不起作用

    class MathDojo(object):
        def __init__(self):
            self.count = 0

        def add(self,var1,*args):
            self.var1 = var1
            self.var1 = [x for x in self.var1, sum(self.var1)]
            self.args = list(args)
            self.args = sum(self.args)
            self.count += (self.var1 + self.args)
            return self


        def subtract(self,var1,*args):
            self.var1 = var1
            self.var1 = sum(self.var1)
            self.args = list(args)
            self.args = sum(self.args)
            self.count += -(self.var1 + self.args)
            return self

        def result(self):
            print self.count
            return self

    test = MathDojo()
    test.add(2,2,2).subtract([3,2,1],3,1,2).add(1,3,5,6,7).subtract(3,4,6).result()


    Traceback (most recent call last):
      File "mathdojo.py", line 26, in <module>
        test.add(2,2,2).subtract([3,2,1],3,1,2).add(1,3,5,6,7).subtract(3,4,6).result()
      File "mathdojo.py", line 6, in add
        self.var1 = [x for x in var1, sum(var1)]
    TypeError: 'int' object is not iterable
类MathDojo(对象):
定义初始化(自):
self.count=0
def添加(self、var1、*args):
self.var1=var1
self.var1=[x代表self.var1中的x,求和(self.var1)]
self.args=列表(args)
self.args=总和(self.args)
self.count+=(self.var1+self.args)
回归自我
def减法(self、var1、*args):
self.var1=var1
self.var1=总和(self.var1)
self.args=列表(args)
self.args=总和(self.args)
self.count+=-(self.var1+self.args)
回归自我
def结果(自我):
打印自计数
回归自我
test=MathDojo()
测试.加(2,2,2).减([3,2,1],3,1,2).加(1,3,5,6,7).减(3,4,6).结果()
回溯(最近一次呼叫最后一次):
文件“mathdojo.py”,第26行,在
测试.加(2,2,2).减([3,2,1],3,1,2).加(1,3,5,6,7).减(3,4,6).结果()
文件“mathdojo.py”,第6行,添加
self.var1=[x代表var1中的x,求和(var1)]
TypeError:“int”对象不可编辑

测试。添加(2,2,2)
将使var1等于2。2不是列表,因此self.var1,sum(self.var1)中x的行
x将有错误,因为for和sum都需要列表,而2是整数。您可以使用
test.add([2,2,2])
这将满足您的目的:

self.var1=[x代表范围内的x(self.var1)]

self.var1.append(sum(self.var1))


但代码的后面部分还有许多其他bug。因此,我想知道代码是否可以在不修复它们的情况下运行。

我不知道您在这里想做什么
add
大概是类定义中的某个方法?这个方法应该做什么?如果您试图找到列表
var1
的和,那么您所需要的就是
sum(var1)
…最好显示您在哪里调用该函数以及使用哪些参数。可能是因为错误表明您传递的是一个int而不是一个列表……很抱歉,为了可读性,我不想包含太多代码。我会把它全部包括在内,哪一行给出了错误?当你得到错误时,
var1
2
,这是一个整数,因此不适用……谢谢你,Thierry先帮了忙,但这是同样的工作