步骤三2-6编程练习

来源:2-6 编程练习

起风了__

2020-02-07 01:19:09

class Point(object):
    #  自定义Point类的构造(初始化)方法
    def __init__(self, x, y):
        self.x = x
        self.y = y

# 自定义Point类对象的格式化输出函数(string())
    def String(self):
        str_point = '{X:{}, Y:{}}'.format(self.x, self.y)
        print(str_point)


class Circle(Point):
    # 自定义Circle类的构造(初始化)方法
    def __init__(self, x, y, radius):
        super(Point, self).__init__(x, y)
        self.radius = radius

# 自定义Circle类对象的格式化输出函数(string())
    def string(self):
        str_point = '{X:{}, Y:{}};{半径为:{}}'.format(self.x, self.y, self.radius)
        print(str_point)


class Size(object):
    # 自定义Size类的构造(初始化)方法
    def __init__(self, width, height):
        self.width = width
        self.height = height
    
    # 自定义Size类对象的格式化输出函数(string())
    def string(self):
        str_point = '{Width:{}, Height:{}}'.format(self.width, self.height)
        print(str_point)


class Rectangle(Point, Size):
    # 自定义Rectangle类的构造(初始化)方法,并在方法中调用父类的初始化方法以完成初始化
    def __init__(self, x, y, width, height):
        super(Point,self).__init__(x, y)
        super(Size, self).__init__(width, height)

    # 自定义Rectangle类对象的格式化输出函数(string())
    def Rectangle(self):
        str_re = '该图形的初始化点为:{X:{}, Y:{}};长宽分别为:{Width:{}, Height:{}}'.format(self.x, self.y, self.width, self.height)
        print(str_re)


if __name__ == "__main__":
    # 实例化Circle对象,圆心为(5,5),半径为8
    Circle(5, 5, 8)
# 实例化Rectangle对象,顶点位置(15,15),长和宽分别为15和15
    Rectangle(15, 15, 15, 15)
# 实例化Rectangle对象,顶点位置(40,30),长和宽分别为11和14
    Rectangle(40, 30, 11, 14)

程序报错,请大神指明原因

写回答

2回答

好帮手乔木

2020-02-07

同学你好:

同学可以参考并采纳为学习而奋斗同学的回答。该同学的回答将同学遇到的问题讲解的很清楚。

学习愉快^_^。


0

为学习而奋斗

2020-02-07

同学,您好:

同学的几个问题,我已经规划出来了:

(1):子类调用父类有三种方法:

1、父类名.父类方法(self):Point.__init__(self,x,y)

2、super(子类名,self).父类方法():python2和python3中都可以使用,如果需要参数,则需要传参。

3、super().父类方法():仅在python3中使用,子类名和self是可以不写的

目前使用较多的是Python3版本,在继承父类时使用哪一种都是可以的(super()是依赖继承的)。

(2):

使用format方法,在字符串中的{}相当于一个占位的符号。如果我们想要输出{},那么就需要{{}}进行转义。这样才能输出{}的效果。



举一个类似的例子:\n在字符串中代表换行,但是我们就是想输出\n,那么就要转义:\\n就可以输出\n。

(3):

同学的代码我已经改正了,请同学查看,同学在看的同时,也可以理解理解

class Point(object):
   #  自定义Point类的构造(初始化)方法
   def __init__(self, x, y):
       self.x = x
       self.y = y

   # 自定义Point类对象的格式化输出函数(string())
   def String(self):
       # str_point = '{X:{}, Y:{}}'.format(self.x, self.y)
       '''此处再嵌套两个括号'''
       str_point = '{{X:{}, Y:{}}}'.format(self.x, self.y)
       print(str_point)


class Circle(Point):
   # 自定义Circle类的构造(初始化)方法
   def __init__(self, x, y, radius):
       # super(Point, self).__init__(x, y)
       '''调用的是父类,但是里面是子类加self'''
       super(Circle, self).__init__(x, y)
       self.radius = radius

   # 自定义Circle类对象的格式化输出函数(string())
   def string(self):
       # str_point = '{X:{}, Y:{}};{半径为:{}}'.format(self.x, self.y, self.radius)
       '''此处再嵌套四个括号'''
       str_point = '{{X:{}, Y:{}}};{{半径为:{}}}'.format(self.x, self.y, self.radius)
       print(str_point)


class Size(object):
   # 自定义Size类的构造(初始化)方法
   def __init__(self, width, height):
       self.width = width
       self.height = height

   # 自定义Size类对象的格式化输出函数(string())
   def string(self):
       # str_point = '{Width:{}, Height:{}}'.format(self.width, self.height)
       '''此处再嵌套两个括号'''
       str_point = '{{Width:{}, Height:{}}}'.format(self.width, self.height)
       print(str_point)


class Rectangle(Point, Size):
   # 自定义Rectangle类的构造(初始化)方法,并在方法中调用父类的初始化方法以完成初始化
   def __init__(self, x, y, width, height):
       # super(Point, self).__init__(x, y)
       Point.__init__(self,x,y)
       # super(Size, self).__init__(width, height)
       Size.__init__(self,width,height)

   # 自定义Rectangle类对象的格式化输出函数(string())
   def Rectangle(self):
       # str_re = '该图形的初始化点为:{X:{}, Y:{}};长宽分别为:{Width:{}, Height:{}}'.format(self.x, self.y, self.width, self.height)
       '''此处再嵌套四个括号'''
       str_re = '该图形的初始化点为:{{X:{}, Y:{}}};长宽分别为:{{Width:{}, Height:{}}}'.format(self.x, self.y, self.width, self.height)
       print(str_re)


if __name__ == "__main__":
   # 实例化Circle对象,圆心为(5,5),半径为8
   # Circle(5, 5, 8)
   r = Circle(5, 5, 8)
   r.string()
   # 实例化Rectangle对象,顶点位置(15,15),长和宽分别为15和15
   # Rectangle(15, 15, 15, 15)
   r2 = Rectangle(15, 15, 15, 15)
   r2.Rectangle()
   # 实例化Rectangle对象,顶点位置(40,30),长和宽分别为11和14
   # Rectangle(40, 30, 11, 14)
   r3 = Rectangle(40, 30, 11, 14)
   r3.Rectangle()

0

0 学习 · 8160 问题

查看课程

相似问题