python单例模式

点点圈 提交于 2020-01-09 16:41:10
单例模式,无论实例化多少次,实例化的都是首次实例化内容
class Person:
    __instance = None

    def __init__(self):
        self.name = 'nana'


    def __new__(cls, *args, **kwargs):#__new__在__init__之前执行
        if cls.__instance:#判断如果这个实例的值不为空
            return cls.__instance #就返回这个实例

        cls.__instance = super().__new__(cls)#走到下面说明是第一次实例化,就调用父类
        return cls.__instance #然后返回这个实例

p1 = Person()
p2 = Person()
p1.name = 'www'
print(id(p1),id(p2)) #同一个内存地址
print(p2.name) #www
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!