python初学者写博客的第一天,记录学python学习过程(渴望得到大佬指点)
今天写了一个Python练习题,发现自己的和答案相差有点大(虽然做出来了)。
-
问题:
- 设计两个类:
- 一个点类,属性包括x,y坐标
- 一个 rcetangle(矩形) 类,属性有左上角和右下角坐标
- 计算矩形面积
- 判断点是否在矩形内
- 实例化一个对象,一个正方形对象,输出矩形面积,输出点是否在矩形内
我做的(未修改)
class Dot(object): def __init__(self, x, y): self.x = x self.y = y class Rectangle(Dot): def __init__(self, top_left_corner_x, top_left_corner_y, lower_right_corner_x, lower_right_corner_y, x, y): super().__init__(x, y) self.top_left_corner_x = top_left_corner_x self.top_left_corner_y = top_left_corner_y self.lower_right_corner_x = lower_right_corner_x self.lower_right_corner_y = lower_right_corner_y def area(self): length = abs(self.lower_right_corner_x - self.top_left_corner_x) height = abs(self.lower_right_corner_y - self.top_left_corner_y) area = length * height return area def is_in(self): if self.lower_right_corner_x > self.x > self.top_left_corner_x and \ self.lower_right_corner_y > self.y > self.top_left_corner_y: print('点在矩形里') else: print('点没在') s = Rectangle(0, 10, 10, 0, 1, 1) d = Dot(1, 100) print(s.area()) s.is_in()
这是没修改前的,使用了继承,实际上点和矩形是没有继承关系的
倒数第三行代码也是没有用处的
属性太多
不如干脆写一个类
修改版
class Dot(object): def __init__(self, x, y): self.x = x self.y = y class Rectangle(object): def __init__(self, top_left_corner: Dot, lower_right_corner: Dot): self.top_left_corner = top_left_corner self.lower_right_corner = lower_right_corner def area(self): length = abs(self.lower_right_corner.x - self.top_left_corner.x) height = abs(self.lower_right_corner.y - self.top_left_corner.y) area = length * height return area def is_in(self, dot): if self.lower_right_corner.x > dot.x > self.top_left_corner.x and \ self.lower_right_corner.y > dot.y > self.top_left_corner.y: print('点在矩形里') else: print('点没在') d1 = Dot(0, 10) d2 = Dot(10, 0) s = Rectangle(d1, d2) d = Dot(100, 100) print(s.area()) s.is_in(d)
收获
1.def__ init__(self, top_left_corner: Dot, lower_right_corner: Dot):
应该是调用类(有疑问)
2.abs()内置函数,取绝对值
3.继承别瞎用