TypeError:只能将str(而不是“ int”)连接为str无法修复

时间:2019-05-10 17:36:08

标签: python class

这是重复项,但是都不能解决我的问题。我正在尝试制作一个名为apply_age的函数,它将在您上课的年龄上增加一年,但出现错误

  

TypeError:只能将str(而不是“ int”)连接到str。

我尝试过self.age = int(self.age + 1) and self.age = (self.age + int(1)),但仍然遇到相同的错误。

class person: # creates class called person
    def __init__(self, name, age):
        self.name = name # defines name
        self.age = age # defines age

    def name_age(self): # creates function called name_age
        return "{} {}".format(self.name, self.age) # returns name and age

    def apply_age(self):
        self.age = self.age + 1


person_1 = person("Nathaniel Gamester", "14")
person_2 = person("Aidan Gamester", "19")

print(person_1.name_age())
person_1.apply_age()
print(person_1.name_age())

我希望输出再次显示我的名字和新年龄,但这只是给我上面的错误。

4 个答案:

答案 0 :(得分:1)

您的年龄是字符串! 这就是为什么TypeError。您不能添加字符串和整数。

person_1 = person("Nathaniel Gamester", 14)
person_2 = person("Aidan Gamester", 19)

具有年龄年龄

答案 1 :(得分:0)

确保您的年龄是正确的数据类型;

def __init__(self, name, age):
    self.name = name # defines name
    self.age = int(age) # defines age

答案 2 :(得分:0)

代码验证:

class person: # creates class called person
    def __init__(self, name, age):
        self.name = name # defines name
        self.age = age # defines age

    def name_age(self): # creates function called name_age
        return "{} {}".format(self.name, self.age) # returns name and age

    def apply_age(self):
        self.age = self.age + 1


person_1 = person("Nathaniel Gamester", 14)
person_2 = person("Aidan Gamester", 19)

print(person_1.name_age())
person_1.apply_age()
print(person_1.name_age())

错误原因:您正在传递包含整数而不是整数的字符串。由于python是弱类型语言,因此变量根据数据获得数据类型。您通过的年龄在""内部,因此编译器将其解释为字符串。要使其整数,只需除去引号即可。

答案 3 :(得分:-1)

您的self.age是str。您需要执行类似self.age = str(int(self.age)+1)的操作