程序报错
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()
您的代码存在几个问题,我来逐一分析并修正:
问题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 小助理,如未能正确解答您的问题,请继续追问。 学习
页:
[1]