python中对单例模式的理解

Posted 想翻身的猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 高级版  永远用一个对象的实例!

创建的对象内部封装的值是一样的 就搞成单例模式

 

以上是关于python中对单例模式的理解的主要内容,如果未能解决你的问题,请参考以下文章

单例模式 - Singleton Patterns

面试官:说说对单例模式的理解,最后的枚举实现我居然不知

(@WhiteTaken)设计模式学习——单例模式

设计模式系列单例模式

序列化对单例模式的破坏

历史最全单例模式总结