夏瑾 发表于 2025-7-22 10:01:27

程序报错

class shape:
    def __init__(self,name):
      self.name=name
   def area(self):
            pass

class Square(shape):
    def __init__(self):
      super.__init__("正方形")
    def area(self,height):
      self.height=height
      return self.height*self.height

s=Square(5)
s.name()
s.area()

FishC 发表于 2025-7-22 10:02:08

您的代码存在几个问题,我来逐一分析并修正:

问题1:缩进错误
Python严格依赖缩进,shape类中的area方法缩进不一致(def前面有空格,但内部多缩进了)

问题2:super调用错误
调用父类方法应使用 super().__init__ 而不是 super.__init__

问题3:构造函数参数缺失
Square的__init__未定义参数,但实例化时传入了 Square(5)

问题4:area方法参数不匹配
定义的area需要height参数,但调用时未传参

修正后的代码:

class Shape:
    def __init__(self, name):
      self.name = name
      
    def area(self):
      pass

class Square(Shape):
    def __init__(self, side):# 添加side参数
      super().__init__("正方形")# 修正super调用
      self.side = side# 存储边长
      
    def area(self):# 去除参数
      return self.side * self.side# 使用存储的边长

s = Square(5)
print(s.name)# 属性访问无需括号
print(s.area())# 正确调用无参方法


主要修改点:
1. 将边长 side 作为构造参数传入并存储
2. 调用父类构造使用 super().__init__()
3. area() 改为无参方法,使用存储的边长计算
4. 属性访问 s.name 去掉括号(不是方法)
5. 类名首字母建议大写(Shape)

执行结果:
正方形
25

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

D_ut 发表于 2025-7-22 17:39:02

学习
页: [1]
查看完整版本: 程序报错