super().__init__()的使用问题
class Point(object):
# 自定义Point类的构造(初始化)方法
def __init__(self, x, y):
#super().__init__()为什么这里如果不注释会报错
self.x = x
self.y = y
# 自定义Point类对象的格式化输出函数(string())
def string(self):
print('{X:{0},Y:{1}}'.format(self.x, self.y))
class Circle(Point):
# 自定义Circle类的构造(初始化)方法
def __init__(self, x, y, radius):
super().__init__(x, y)#而这里保留却不会报错?
self.radius = radius
# 自定义Circle类对象的格式化输出函数(string())
def string(self):
# print('该图形初始化点为:{X:{0},Y:{1}};{半径为:{2}}'.format(self.x, self.y, self.radius))
print("该图形初始化点为:{{X:{0}, Y:{1}}};{{半径为:{2}}}".format(self.x, self.y, self.radius))
class Size(object):
# 自定义Size类的构造(初始化)方法
def __init__(self, width, height):
super().__init__()
self.width = width
self.height = height
# 自定义Size类对象的格式化输出函数(string())
def string(self):
# print('{Width:{0},Height:{1}}'.format(self.width, self.height))
print("{{Width:{0}, Height:{1}}}".format(self.width, self.height))
class Rectangle(Point, Size):
def __init__(self, x, y, width, height):
# super().__init__(x, y, width, height)
Point.__init__(self, x, y)
Size.__init__(self, width, height)
# 自定义Rectangle类的构造(初始化)方法,并在方法中调用父类的初始化方法以完成初始化
# 自定义Rectangle类对象的格式化输出函数(string())
def string(self):
# print('该图形初始化点为:{X:{0}, Y:{1}}; 长宽分别为:{Width:{2}, Height:{3}}'.format(self.x, self.y, self.width, self.height))
print("该图形初始化点为:{{X:{0}, Y:{1}}}; 长宽分别为:{{Width:{2}, Height:{3}}}".format(self.x, self.y, self.width,self.height))
if __name__ == "__main__":
# 实例化Circle对象,圆心为(5,5),半径为8
c = Circle(5,5,8)
c.string()
# 实例化Rectangle对象,顶点位置(15,15),长和宽分别为15和15
r1 = Rectangle(15,15,15,15)
r1.string()
# 实例化Rectangle对象,顶点位置(40,30),长和宽分别为11和14
r2 = Rectangle(40,30,11,14)
r2.string()5
收起
正在回答 回答被采纳积分+1
1回答
慕猿梦
2019-05-06 11:31:57
同学,你好,
问题1:#super().__init__()为什么这里如果不注释会报错
解决方案:当调用Point.__init__(self, x, y)方法时,执行了Point类中的super().__init__(),已经找到了满足条件的__init__()方法,python解释器将不会向后执行Size.__init__(self, width, height)

问题2:super().__init__(x, y)#而这里保留却不会报错?
解决方案:由于Circle类中有引用了父类Point中的x,y变量,所以这里不可省略。

如果我的回答解决了你的疑惑,欢迎采纳!!^_^ 祝学习愉快~~~~~
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星