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

创建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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:15:36