You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python person类触发can only concatenate str (not "int") to str报错解析

错误根源定位
  • 类构造方法__init__存在属性赋值逻辑笔误:连续两次给self.name属性赋值,第一次存入字符串类型的姓名入参,第二次直接把整数类型的age入参覆盖到self.name上,全程没有给self.age绑定值。这一问题会触发两层连锁故障:
    • self.name最终存储的是整数类型的年龄值,后续执行字符串拼接时,Python不允许字符串和整数类型直接用+运算符连接,直接触发can only concatenate str (not "int") to str报错
    • 实例不存在self.age属性,就算绕过第一行打印的报错,后续打印年龄的语句还会触发属性未定义的AttributeError
  • 打印逻辑本身存在类型不匹配缺陷:就算修正了属性赋值错误,年龄是整数类型,直接和字符串常量做+拼接,依然会触发相同的类型报错。
修正方案
  1. 修正构造方法的赋值笔误:将错误的self.name = age调整为self.age = age,保证self.name存储传入的姓名字符串,self.age存储传入的整数年龄
  2. 调整打印语句的拼接逻辑:将整数类型的年龄转为字符串类型后再和文本拼接,或使用Python原生的格式化语法完成混合类型拼接,从根源避免类型不匹配问题

修正后可直接运行的代码

class person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def myfunc(self):
        print(" Hello my name is " + self.name)
        print(" my age is " + str(self.age))
        # 等效的更简洁写法:使用f-string自动处理类型转换
        # print(f" Hello my name is {self.name}")
        # print(f" my age is {self.age}")

p1 = person("Siddu", 24)
p1.myfunc()

内容的提问来源于stack exchange,提问作者siddarthareddy chitiki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 00:06:01