创建Python类对象时触发错误,求代码修复方案
问题排查与代码修复
你的代码存在以下几处错误,逐一修复即可解决问题:
- 缩进错误:
gift类被错误嵌套在product类内部,Python对缩进敏感,需将gift类与product类放在同一缩进层级 - 字符串格式化语法错误:
product类的__str__方法中,字符串未正确闭合,format()方法被错误写在字符串内部,导致语法报错 - 方法调用错误:打印时直接引用了
get_name、get_price方法对象,而非调用方法(缺少执行方法的括号()) - 类属性与实例属性混淆:
gift类的get_price方法中,错误使用gift.wrappingcharge(类属性),实际应调用实例属性self.wrappingcharge - 无效方法引用:最后一行
print(product.get_name)直接引用类的方法,无实际意义且不符合调用规范
修复后的完整代码:
class product: deliveryCharge = 50 def __init__(self, nam="Teddy Bear", prc=500): self.name = nam self.price = prc def get_name(self): return self.name def get_price(self): return self.price + product.deliveryCharge def __str__(self): # 修复字符串闭合与format调用位置 return f"The {self.get_name()} will cost you Rs.{self.get_price()}" # 修复缩进,与product类同级 class gift(product): def __init__(self, nam, prc, wrpchrge=100): super().__init__(nam, prc) self.wrappingcharge = wrpchrge def get_price(self): # 改为调用实例属性self.wrappingcharge return self.price + product.deliveryCharge + self.wrappingcharge # 修复方法调用,添加执行括号() x1 = product("yoyo", 29) print("I am buying a {} and it costs me {}".format(x1.get_name(), x1.get_price())) m1 = gift("yoyo", 29) print("I am buying a {} and it costs me {}".format(m1.get_name(), m1.get_price())) # 替换无效引用为实例方法调用示例 print(x1.get_name())
内容的提问来源于stack exchange,提问作者SKB
相关产品推荐
相关产品推荐

