老师您帮我看看这个代码的问题出在哪?

来源:2-6 编程练习

WU_JIE

2019-12-21 20:18:27

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), end = ';')

class  Circle(Point):
    # 自定义Circle类的构造(初始化)方法
    def init(x, y, r):
        super(Point, self).__init__(self ,x ,y)
        self.r = r
    # 自定义Circle类对象的格式化输出函数(string())
    def string(self):
        super(Point, self).string(self)
        print('半径为:{0}'.format(self.r))
       
   
class Size(object):
    # 自定义Size类的构造(初始化)方法
    def size(self, width, height):
        self.width = width
        self.height = height
    # 自定义Size类对象的格式化输出函数(string())
    def string(self):
        print('长宽分别为:{{0},{1}}'.format(self.width, self.height))
   
class Rectangle(Point, Size):
    def init(x, y, width, height):
        Point.__init__(self, x, y)
        Size.__init__(self, width, height)
    # 自定义Rectangle类的构造(初始化)方法,并在方法中调用父类的初始化方法以完成初始化
    def string(self):
        Point.string(self)
        Size.string(self)
    # 自定义Rectangle类对象的格式化输出函数(string())
   
if __name__ == "__main__":
    # 实例化Circle对象,圆心为(5,5),半径为8
    c = Circle(5, 5, 8)
    # 实例化Rectangle对象,顶点位置(15,15),长和宽分别为15和15
    r1 = Rectangle(15, 15, 15, 15)
    # 实例化Rectangle对象,顶点位置(40,30),长和宽分别为11和14
    r2 = Rectangle(40, 30, 11, 14)
   
    c.string()
    r1.string()
    r2.string()


写回答

1回答

时间,

2019-12-22

同学,你好。

1、Point()类中在输出实例属性时,应为大写的X和Y。另当使用format格式化时,字符串中需要使用大括号时可以使用大括号进行转义。

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

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

2、Circle()类的初始化方法应为__init__(),在调用父类初始化方法时,不需要传self参数。

    string()方法中调用父类的string()方法时,super中应写子类Circle,不需要写self参数

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

3、Size()类的初始化方法为__init__()

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

4、Rectangle()初始化方法为__init__,第一个参数为self

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

同学在写完代码后,可以先运行下,根据控制台中的报错信息找到对应的代码进行修改。

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

0

0 学习 · 8160 问题

查看课程