0

我不知道为什么会出现错误: 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()

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

4

1 回答 1

2

您已将valuepig 设置为字符串,然后在调用时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)

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

于 2013-11-03T23:14:36.010 回答