Python如何调用不同类返回值实现多边形内外角结果相加
问题修复方案
原有代码问题
- 所有类的初始化方法赋值错误:
__init__中错误写为self.x = self,应改为self.x = x,正确接收传入的正多边形边数 - 角度计算方法未绑定实例属性:两个角度计算类的计算逻辑中直接使用变量
x,未加self.前缀,会触发变量未定义报错 - AngleAddition类缺少跨类调用逻辑:
Add方法直接使用未定义的interior、exterior变量,没有关联另外两个类的计算能力
修复后完整代码
class PolygonInteriorAngle(object): def __init__(self, x): self.x = x def FindInteriorAngle(self): degrees = int((self.x - 2) * 180) interior = int(degrees / self.x) return interior def PrintInterior(self): print("interior angle: " + str(self.FindInteriorAngle())) class PolygonExteriorAngle(object): def __init__(self, x): self.x = x def FindExteriorAngle(self): exterior = int(360 / self.x) return exterior def PrintExterior(self): print("exterior angle: " + str(self.FindExteriorAngle())) class AngleAddition(object): def __init__(self, x): self.x = x def Add(self): # 实例化另外两个计算类,调用对应方法获取值 interior_val = PolygonInteriorAngle(self.x).FindInteriorAngle() exterior_val = PolygonExteriorAngle(self.x).FindExteriorAngle() return int(interior_val + exterior_val) def PrintAdd(self): print("sum of interior and exterior: " + str(self.Add())) if __name__ == "__main__": x = int(input("enter: ")) intObj = PolygonInteriorAngle(x) intObj.PrintInterior() extObj = PolygonExteriorAngle(x) extObj.PrintExterior() addObj = AngleAddition(x) addObj.PrintAdd()
实现说明
AngleAddition类中调用其他类返回值的逻辑非常直接:在Add方法内部传入当前实例存储的边数self.x,分别实例化PolygonInteriorAngle、PolygonExteriorAngle两个类,再调用各自的计算方法拿到内角、外角值,相加后返回即可,完全保留了要求的三类拆分结构。
输入x=6时运行结果如下:
enter: 6 interior angle: 120 exterior angle: 60 sum of interior and exterior: 180
内容的提问来源于stack exchange,提问作者hithit
相关产品推荐
相关产品推荐

