【问题标题】:TypeError: Can't convert 'int' object to string implicityTypeError:无法将“int”对象隐式转换为字符串
【发布时间】:2013-11-03 23:09:13
【问题描述】:

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

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

【问题讨论】:

  • 哪里出错了?
  • 是self.name一个字符串,还是你在创建Pig对象时传入一个数字?
  • Ops sry,我已经编辑了问题并评论了错误发生的位置。
  • 我不确定你的意思,因为我是一个超级初学者。但是 self.name 是在我的农场班级中决定的。 with for i in self.animals: print(i.name,i.weight, 等等)。

标签: python string python-3.x int


【解决方案1】:

您已将猪的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)

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

【讨论】:

  • 我明白了。这给我带来了一个新问题,因为我是如何在我的主代码中决定年龄、重量和价值的。如果你明白我的意思,我写它就像 Pig("bla the pig", "age: 2", "weight: 50"。
  • @Bodenn:你不能那样做;让属性名称自己决定值的含义,不要存储带有类似元数据的字符串。
  • @Bondenn:至少,解析出值:self.age = int(age.rsplit(':', 1)[-1]) 会得到 just 最后一个: 之后的字符串部分并将其转换为整数。
  • 好吧,作为一个初学者,这对我不利!但是,当我想要确定属性时,我该怎么做呢?例如:如果你买一头猪,它应该被出示,名字:猪,年龄:2,体重:50kg等等?
  • @Bondenn:把 that 留给打印代码;看看the string format syntax,让这部分变得更容易。
猜你喜欢
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 2017-07-21
  • 1970-01-01
相关资源
最近更新 更多