class Operation: def __init__(self,numA,numB): self.numA=numA self.numB=numB def yunsuan(self): pass class OperationAdd(Operation): def __init__(self,numA,numB): super().__init__(numA,numB) def yunsuan(self): return self.numA+self.numB class OperationSub(Operation): def __init__(self, numA, numB): super().__init__(numA, numB) def yunsuan(self): return self.numA-self.numB class OperationMul(Operation): def __init__(self, numA, numB): super().__init__(numA, numB) def yunsuan(self): return self.numA*self.numB class OperationDiv(Operation): def __init__(self, numA, numB): super().__init__(numA, numB) def yunsuan(self): return self.numA//self.numB #工厂类 class OperationFactory(object): @classmethod def getOperation(self,fu,numA,numB): if'+'.__eq__(fu): return OperationAdd(numA,numB) elif'-'.__eq__(fu): return OperationSub(numA, numB) elif '*'.__eq__(fu): return OperationMul(numA, numB) elif '/'.__eq__(fu): return OperationDiv(numA, numB) if '__main__'==__name__: numA=int(input('请输入第一个操作数')) numB=int(input('请输入第二个操作数')) fu=input('请输出操作符') #返回与操作符对应的 运算对象 Operation=OperationFactory.getOperation(fu,numA,numB) Oper=OperationFactory.getOperation(fu,numA,numB) jg=Operation.yunsuan() print('运算结果:',jg) if isinstance(Oper,OperationAdd): print('创建的是 OperationADD 类型的对象') elif isinstance(Oper,OperationSub): print('创建的是 OperationSub 类型的对象') elif isinstance(Oper, OperationMul): print('创建的是 OperationMul 类型的对象') elif isinstance(Oper,OperationDiv): print('创建的是 OperationDiv 类型的对象')
运行结果:+
运行结果:-
运行结果:*
运行结果:/