老师,帮我看看练习题代码,老师出错
来源:2-6 编程练习
dba菜鸟
2019-10-09 11:59:44
class Point(object):
# 自定义Point类的构造(初始化)方法
def __init__(self, x, y):
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(x, 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, height):
super.__init__(x, y)
super.__init__(width, height)
# 自定义Rectangle类对象的格式化输出函数(string())
def string(self):
print('该图形初始化点为:X:{}, Y:{}; 长宽分别为:Width:{}, Height:{}'.format(x, y, midth, height))
if __name__ == "__main__":
# 实例化Circle对象,圆心为(5,5),半径为8
c = Circle(5,5,8)
c.string()
# 实例化Rectangle对象,顶点位置(15,15),长和宽分别为15和15
r1 = Retangle(15,15,15,15)
r1.string()
# 实例化Rectangle对象,顶点位置(40,30),长和宽分别为11和14
r2 = Retangle(40, 30, 11, 14)
r2.string()
1回答
时间,
2019-10-09
同学,你好。代码中错误如下:同学在完成练习时, 要认真点,有些错误是可以避免的。
1、使用super()调用父类方法时方法不对,可以使用下图中的两种方式进行调用。另,在输出x和y时应使用self.x和self.y的方式访问。
2、多继承中进行父类调用时应采用“类名.__init__”的形式,因为在使用super( )进行父类调用时主要用途是为了防止父类中的方法被多次调用,而本案例中使用super( )调用时x,y参数可以被传递至Point类中,而width,height参数没有任何类来进行传递和接收,因此width参数没有被Size类接收。
3、应使用self.x,self.y,self.width, self.height的方式调用
4、在创建实例时,类名写错,应为Rectangle
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
相似问题