# 使用面向对象的方式,实现计算器的简单功能 # 简单的工厂模式 # 定义一个基类:counter,内含两个特性data1和data2,和一个运算符oper class COUNTER(): # 特性:data1 @property def data1(self): return self.d1 @data1.setter def data1(self,value): self.d1 = value # 特性:data2 @property def data2(self): return self.d2 @data2.setter def data2(self,value): self.d2 = value # 定义基类的子类:加、减、乘、除 # COUNTERr子类:加法 class COUNTER_ADD(COUNTER): def addResult(self): return self.data1+self.data2 # COUNTERr子类:减法 class COUNTER_SUBTRACT(COUNTER): def subtractResult(self): return self.data1-self.data2 # COUNTERr子类:乘法 class COUNTER_MULTI(COUNTER): def mutilResult(self): return self.data1*self.data2 # COUNTERr子类:除法 class COUNTER_DIVISION(COUNTER): def dicisionResult(self): if self.data2 == 0: return '除数不能为0' else: return self.data1/self.data2 # 定义子类的子类:OPERATION # 使用设计模式——简单的工厂模式 class OPERATION(COUNTER_ADD,COUNTER_DIVISION,COUNTER_MULTI,COUNTER_SUBTRACT): def __init__(self,oper): self.oper = oper def result(self): if self.oper == "+": return self.addResult() elif self.oper == "-": return self.subtractResult() elif self.oper == "*": return self.mutilResult() elif self.oper == "/": return self.dicisionResult() else: pass # 测试 if __name__ == '__main__': try: a = OPERATION('/') a.data1 = 1 a.data2 = 3 ret = a.result() print(ret) except Exception : print('输入有误。')
浙公网安备 33010602011771号