You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python中Rectangle类的area()复用check()方法?当前两者代码重复

如何让Rectangle类的area()方法复用check()的校验逻辑?

当然可以呀!你现在的问题就是area()方法里重复实现了check()的校验逻辑,完全可以直接调用check()来避免重复代码,还能让代码更易维护。

这样做的核心是遵循单一职责原则:check()专门负责校验矩形是否有效,area()只需要专注于面积计算。以后如果校验规则要调整,只需要修改check()这一处就够了,不用两处都改,大大降低维护成本。

修改后的代码如下:

class Rectangle:
    def __init__(self, x1, y1, x2, y2):
        self.x1 = x1
        self.x2 = x2
        self.y1 = y1
        self.y2 = y2

    def check(self):
        # 检查矩形有效性
        if abs(self.x1 - self.x2) == 0 or abs(self.y1 - self.y2) == 0:
            return False
        else:
            return True

    def area(self):
        # 计算面积,先调用check()做校验
        if not self.check():
            return False
        area = abs(self.x1 - self.x2) * abs(self.y1 - self.y2)
        return area

代码说明:

  • 在area()里直接调用self.check()来判断矩形是否有效,不再重复写校验逻辑
  • 如果check()返回False,就和你原来的逻辑一样返回False;如果校验通过,再计算并返回面积

甚至还可以进一步优化:比如在__init__方法里就调用check(),提前拦截无效的矩形实例(比如抛出异常),这样能避免后续调用方法时才发现问题,不过这取决于你的业务需求啦。

内容的提问来源于stack exchange,提问作者신은화

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:12:27