python大作战之单例设计模式

今天跟大家聊下开发中比较常见的一种设计模式------>单例设计模式

废话不多说,直接上代码

class Singleton(object):
    __instance=None
    __first=True
    def __init__(self,name,age):
        if Singleton.__first:
            self.name=name
            self.age=age
            Singleton.__first=False

    def __new__(cls, *args, **kwargs):
        if not cls.__instance:#这里的含义是:如果cls.__instance为None是真的,才执行if内部的代码,并且执行完返回cls.__instance
            cls.__instance=object.__new__(cls)
        return cls.__instance
s1=Singleton('张三',21)
s2=Singleton('李四',22)
s3=Singleton('王五',23)
print(s1.name,s2.name,s3.name)

执行的结果为:
张三,张三,张三

这里用一张图来解释这个过程

python大作战之单例设计模式_第1张图片 单例设计模式的内存示意图

 

你可能感兴趣的:(python基础)