老师,帮我看看练习题代码,老师出错

来源: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的方式访问。http://img.mukewang.com/climg/5d9d738109395f3d10780355.jpg

2、多继承中进行父类调用时应采用“类名.__init__”的形式,因为在使用super( )进行父类调用时主要用途是为了防止父类中的方法被多次调用,而本案例中使用super( )调用时x,y参数可以被传递至Point类中,而width,height参数没有任何类来进行传递和接收,因此width参数没有被Size类接收。

3、应使用self.x,self.y,self.width, self.height的方式调用

http://img.mukewang.com/climg/5d9d74900991317a12080323.jpg

4、在创建实例时,类名写错,应为Rectangle

http://img.mukewang.com/climg/5d9d74e809f6e7c706450197.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

1

0 学习 · 8160 问题

查看课程