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 星