首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python面向对象的解析几何

使用Python面向对象的解析几何
EN

Stack Overflow用户
提问于 2018-07-27 05:59:57
回答 1查看 199关注 0票数 0

因此,我第一次深入研究了OOP编程。我遇到了一个练习,我们应该用OOP编写一个脚本,创建一个矩形,计算它的面积和周长,以及与第二个矩形重叠的面积。到目前为止,一切顺利,我设法解决了这个问题。然而,一旦我解决了它,我检查了给定的解决方案,它看起来像这样:

代码语言:javascript
复制
from copy import copy

class Point:

    def __init__(self, x=0.0, y=0.0):
        self.x = x
        self.y = y

    def __repr__(self):
        return '({}, {})'.format(self.x, self.y)


class Rectangle:

    def __init__(self, point, width, height):
        self.point = copy(point)
        self.width = abs(width)
        self.height = abs(height)
        if self.width == 0:
            self.width == 1
        if self.height == 0:
            self.height == 1

    def __repr__(self):
        return '[{}, w = {}, h = {}]'.format(self.point, self.width, self.height)

    def surface_area(self):
        return self.width * self.height

    def circunference(self):
        return 2*(self.width + self.height)

    def bottom_right(self):
        return Point(self.point.x + self.width, self.point.y + self.height)

    def overlap(self, r):
        r1, r2 = self, r
        if self.point.x > r.point.x or (self.point.x == r.point.x and self.point.y > r.point.y):
            r1, r2 = r, self
        if r1.bottom_right().x <= r2.point.x or r1.bottom_right().y <= r2.point.y:
            return None
        return Rectangle(r2.point,
            min(r1.bottom_right().x - r2.point.x, r2.width),
            min(r1.bottom_right().y - r2.point.y, r2.height))


r1 = Rectangle(Point(1, 1), 8, 5)
r2 = Rectangle(Point(2, 3), 9, 2)

print(r1, '\n', r1.surface_area(), '\n', r1.circunference(), '\n', r1.bottom_right())
r = r1.overlap(r2)
if r:
    print(r)
else:
    print('No, overlap.') 

我的问题是bottom_right方法。我很确定它会返回右上角,而不是右下角。但由于我仍然努力在连续性中完全掌握这个逻辑,我担心我可能是那个有错的人。如果解决方案确实是正确的(该方法返回右下角顶点),那么我遗漏了一些东西,因此我不能完全理解这段代码。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51548091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档