步骤三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
同学你好:
同学可以参考并采纳为学习而奋斗同学的回答。该同学的回答将同学遇到的问题讲解的很清楚。
学习愉快^_^。
为学习而奋斗
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()
相似问题