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

Python报错:'int' object has no attribute 'strengthPts'求助

问题解决思路

错误根源

你在第12行直接通过superhero类调用了addStrengthPts方法,而不是用已经创建好的实例s来调用。当以类的方式调用实例方法时,Python不会自动传入self参数,你手动传的0被当成了self,但0是整数类型,自然没有strengthPts属性,这就是报错的原因。

具体修正步骤

  • 调用方法的正确姿势:把superhero.addStrengthPts(0,5)改成s.addStrengthPts(5)。用实例调用方法时,Python会自动把实例s作为self参数传入,你只需要传递points参数即可。
  • 修复拼写错误:类的__init__方法里有个笔误——self.strenght = strength多写了一个h,应该改成self.strength = strength,否则后面打印角色能力时会触发属性错误。
  • 优化字符串拼接:原打印语句的字符串拼接缺少空格,可读性差还容易出错,建议改用f-string来格式化输出,代码更简洁清晰。

修正后的完整代码

class superhero:
    def __init__(self, name = "", strengthPts = 0, motto = "", strength = ""):
        self.name = name
        self.strengthPts = int(strengthPts)
        self.motto = motto
        self.strength = strength  # 修复拼写错误
    def addStrengthPts(self, points):
        self.strengthPts = self.strengthPts + points
def main():
    s = superhero("Señor Cement", 0, "These streets won't stop me!", "creating cement from matter around him and using it to halt villains.")
    s.addStrengthPts(5)  # 改用实例调用方法
    # 用f-string优化输出格式
    print(f"Today on Super of the Week, we present to you {s.name}! After taking down a villain, {s.name} gained {str(s.strengthPts)} points! With their power of {s.strength} and the awesome motto, \"{s.motto}\", you'll definitely want to give their comic a read!")

main()

内容的提问来源于stack exchange,提问作者Star W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:32:12