python——继承 简单工厂 单例模式

单例模式:该模式的主要目的是确保某一个类只有一个实例存在

class singleton:

    name='sing'

      借助第三方变量

    __instance=None;

    def __new__(cls, *args, **kwargs):

        if cls.__instance == None:

            cls.__instance= object.__new__(cls);

            return  cls.__instance;

        else:

            return cls.__instance;

 

    def __init__(self,score):

        self.score=score;

 

s=singleton(60);

setattr(singleton,'name','oop')

 

print(singleton.name)

 

 print(s.__getattribute__('score'))

  s.__setattr__('score2',70)

   print(s.__getattribute__('score2'))

print('getattr(s,score2)',getattr(singleton,'name'))

   print(' hasattr(s,score2)', hasattr(s,'score2'))

   print(id(s))

   s1=singleton();

   print(id(s1))

   a,b=10,5;

   c=a;

   a=b;

   b=c;

     b,a=a,b;

   print(a,b)

计算器

class Operation:

    def __new__(cls):

       pass

    def GetResult(self,numA, numB):

        print('计算2操作数的运算结果')

 

class OpeartionAdd(Operation):

 

    def __new__(cls):

        return object.__new__(cls);

        return  Operation.__new__(cls)

 

    def GetResult(self,numA,numB):

        return  numA+numB

 

class OperationSub(Operation):

    def GetResult(self,numA,numB):

        return  numA-numB

 

class OperationMul(Operation):

    def GetResult(self,numA,numB):

        return  numA*numB

class OperationDiv(Operation):

    def GetResult(self,numA,numB):

        return  numA//numB

 

class OperationFactory(object):

     不同的参数创建不同的对象的  函数

    def create_class(self,fu):

        if fu == '+':

            q = OpeartionAdd();

        elif fu == '-':

            q = OperationSub();

        elif fu == '*':

            q = OperationMul();

        elif fu == '/':

            q = OperationDiv();

        return q;

 

if __name__== '__main__':

    工厂对象

    factory=OperationFactory();

    numA=int(input('请输入第一个操作数'))

    numB=int(input('请输入第二个操作数'))

    fu = input('请输入运算符:')

     q代表 由 工厂创建出来的一个计算器

    q=factory.create_class(fu)

    print('计算结果:',q.GetResult(numA, numB))

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值