TypeError:无法将'int'对象转换为字符串implicity

时间:2013-11-03 23:09:14

标签: python string python-3.x int

我无法弄清楚为什么会收到错误:TypeError: Can't convert 'int' object to string implicity

这是该课程的相关代码:

class Pig():

def __init__(self, name, age, weight, value):
    self.name = name
    self.age = age
    self.weight = weight
    self.value = value

def runAndGainValue(self, value):
    self.value += value  #This is where the error occur.

def __str__(self):
    a = self.name + " "
    a += str(self.value) + " "
    return a

这是主程序代码的一部分:

elif work == "2":
    yourfarm.printAnimals()
    print ("blablablabla")
    for pig in p:
        pig.runAndGainValue(5)
    yourfarm.printAnimals()

我无法弄清楚为什么会出现这个错误。我已经尝试过搜索它,但我是编程新手,所以我在解释一个完全不同的代码但遇到同样的问题时遇到了很多麻烦。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您已将猪的value设置为字符串,然后当您调用pig.runAndGainValue(5)时,您尝试将整数添加到字符串中:

def runAndGainValue(self, value):
    self.value += value

这引发了异常,因为Python字符串不会隐式转换为数字,即使它们的值可以解释为数字:

>>> '10' + 5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly

创建Pig时,请始终确保value为整数。也许您需要在初始化程序中显式转换:

def __init__(self, name, age, weight, value):
    self.name = name
    self.age = int(age)
    self.weight = int(weight)
    self.value = int(value)

或只是确保您的输入是整数。