还请帮忙指出代码问题
来源:6-2 编程练习
绿皮皮与伊人
2021-07-27 21:32:04
class Point(object):
# 自定义Point类的构造(初始化)方法
def __init__(self,x,y):
self.x=x
self.y=y
def string(self):
print('X:{}, Y:{}'.format(self.x,self.y))
# 自定义Point类对象的格式化输出函数(string())
class Circle(Point):
def __init__(self, x,y,radius):
self.radius=radius
# 自定义Circle类的构造(初始化)方法
# 自定义Circle类对象的格式化输出函数(string())
def string(self):
print('该图形初始化点为:X:{}, Y:{}; 半径为:{}'.format(self.x,self.y,self.radius))
class Size(object):
# 自定义Size类的构造(初始化)方法
def __init__(self,width,height):
self.width=width
self.height=height
# 自定义Size类对象的格式化输出函数(string())
def string(self):
print('Width:{}, Height:{}'.format(self.width,self.height))
class Rectangle(Point, Size):
# 自定义Rectangle类的构造(初始化)方法,并在方法中调用父类的初始化方法以完成初始化
def __init__(self,x,y,width,weight):
super(Rectangle, self).__init__(x,y,width,weight)
# 自定义Rectangle类对象的格式化输出函数(string())
def string(self):
print('Width:{}, Height:{}'.format(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)
# 实例化Rectangle对象,顶点位置(40,30),长和宽分别为11和14
r2=Rectangle(40,30,11,14)
1回答
好帮手慕念
2021-07-28
同学,你好!代码中有以下几个问题
(1)报错显示属性错误:‘Circle’对象没有属性‘x’
解决方案:需要使用super()调用父类的__init__方法,如下图

(2)报错显示类型错误:__init__()接受3个位置参数,但给出了5个

当子类Rectangle同时继承多个父类时,super()会调用第一个父类Point的__init__方法,因此会报错。需要使用Size.__init__()方式调用,如下图

(3)输出格式及输出内容

可以使用%进行格式化


最后使用两个Rectangle实例化对象r1和r2,调用string()方法


祝学习愉快!
相似问题