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.
相关产品推荐
相关产品推荐

