|
发表于 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 小助理,如未能正确解答您的问题,请继续追问。 |
|