正在回答
同学,你好。
1、在2和4中,实现花括号效果可以使用字符串拼接的形式
2、Rectangle()继承两个类,在调用父类时,可以用父类.方法()的形式来调用继承的父类中的__init__()方法。
同学可以参考下述代码进行优化:
class Point(object): def __init__(self, x=0, y=0): self.x = x self.y = y def string(self): return "{X:" + str(self.x) + ", Y:" + str(self.y) + "}" class Circle(Point): def __init__(self, x, y, radius): super().__init__(x, y) self.radius = radius def string(self): return "该图形初始化点为:" + super().string() + "; {半径为:" + str(self.radius) + "}" class Size(object): def __init__(self, width, height): self.width = width self.height = height def string(self): return "{Width: " + str(self.width) + ", Height: " + str(self.height) + "}" class Rectangle(Point, Size): def __init__(self, x, y, width, height): Point.__init__(self, x, y) Size.__init__(self, width, height) def string(self): return "该图形初始化点为:" + Point.string(self) + ";" \ " 长宽分别为:" + Size.string(self) if __name__ == "__main__": c = Circle(5, 5, 8) print(c.string()) r1 = Rectangle(15, 15, 15, 15) print(r1.string()) r2 = Rectangle(40, 30, 11, 14) print(r2.string())
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
同学,你好。
1、Point.__init__()跟super(Point,self).__init__()不是等价的。Point.__init__()是调用Point类中的init方法。super(Point,self).__init__()是调用Point的父类object的init方法。
因为Rectangle()类继承了Point和Size父类,又因这两个父类继承了object类,相当于Rectangle()类有三个父类,在执行super(Point,self).__init__()时,object类中的init是没有参数的,x和y参数是传递不过去的,因此会在Size()类中查找,会输出结果,即width和height。
2、若使用super(Point,self).__init__()和super(Size,self).__init__()的话,继承的是这两个子类的父类即object()中的__init__()方法,因为object中有init方法,则不会执行子类中的init方法。又因object类的init方法中没有参数,因此在传参的时候会报错。
3、Point.__init__()和Size.__init__()是使用类名调用方法,会直接执行相应类中的init方法进行初始化。
同学,你好。
1、同学string()方法中是要使用format实现效果吗?当使用format格式化时,字符串中需要使用大括号时可以使用大括号进行转义,即再添加一层大括号嵌套。
例:
2、Rectangle()继承两个类,在调用两个父类中的方法时,不能使用super()调用。因为在使用super( )进行父类调用时期主要用途是为了防止父类中的方法被多次调用,而本案例中使用super( )调用时x,y参数可以被传递至Point类中,而width,height参数没有任何类来进行传递和接收,因此width参数没有被Size类接收。
解决办法:Rectangle类继承两个父类,可以用父类.方法()的形式来调用继承的父类中的__init__()方法。
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星