课堂练习 工厂模式

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 类型的对象')
 

运行结果:+


运行结果:-


运行结果:*


运行结果:/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值