如何让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,提问作者신은화
相关产品推荐
相关产品推荐

