python单例模式

单例模式,无论实例化多少次,实例化的都是首次实例化内容
适用于只需要实例化一次的类,比如数据库连接
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
posted @ 2020-01-09 15:56  颜颜blog  阅读(91)  评论(0编辑  收藏  举报