zoukankan      html  css  js  c++  java
  • python中对单例模式的理解

    class Foo(object):
        instance = None
    
        def __init__(self):
            pass
        def process(self):
            return '1234565'
    
        @classmethod   #版本1单例模式
        def get_instance(cls):
            if  Foo.instance:
                return Foo.instance
            else:
                Foo.instance = Foo()
                return Foo.instance
    
    
    obj1 = Foo()
    print(obj1.process())
    
    obj2 = Foo()
    print(obj2.process())
    obj1不相等obj2  id(obj1)
    
    obj1 = Foo.get_instance()
    obj2 = Foo.get_instance()
    此时的obj1=obj2
    
    
    class Foo(object):
        instance = None
    
        def __init__(self):
            self.name = 'alex'
    
        def __new__(cls, *args, **kwargs):
            if Foo.instance:
                return Foo.instance
            else:
                obj = object.__new__(cls, *args, **kwargs) #创建对象的本质是new  new先执行
                return return obj
    
    obj1 = Foo()
    obj2 = Foo()
    print(id(obj1), id(obj2))  obj1=obj2  单例模式2 高级版  永远用一个对象的实例!
    
    创建的对象内部封装的值是一样的 就搞成单例模式
  • 相关阅读:
    第一次作业
    冯娟的第五次作业
    冯娟的第三次作业
    冯娟的第四次作业
    冯娟的第二次作业
    数据压缩第一次作业
    第二次实验
    第三次实验
    第一次实验
    第五次作业
  • 原文地址:https://www.cnblogs.com/Liang-jc/p/9286287.html
Copyright © 2011-2022 走看看