正在回答
同学,你好。
1、在2和4中,实现花括号效果可以使用字符串拼接的形式
2、Rectangle()继承两个类,在调用父类时,可以用父类.方法()的形式来调用继承的父类中的__init__()方法。
同学可以参考下述代码进行优化:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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积分~
来为老师/同学的回答评分吧