专业编程基础技术教程

网站首页 > 基础教程 正文

python的单例模式(单例 python)

ccvgpt 2025-06-18 19:30:14 基础教程 2 ℃
#python单例模式

class Singleins:
    ins = None
    init_flag = False
    def __new__(cls, *args, **kwargs):
        if cls.ins == None:
            cls.ins = super().__new__(cls)
        return cls.ins


    def __init__(self,name):
        self.name = name  #第17行:ins1实例初始化的时候,代码执行到这一行 self.name = aa,下一行的print立刻就打印出来了。但是到了22行的时候ins1.name的name值早就被改变了。
        print(self.name) #第17行初始化的时候打印当前的值:aa, 第18行初始化的时候打印当前值:bb

#下边两行其实都是先调用init函数,因为init函数里边有print,所以打印出来了当时那一时刻的name的值:'aa'和'bb'。
ins1 = Singleins('aa')
ins2 = Singleins('bb')  #此行执行完之后self.name 等于 'bb'。它会覆盖ins1实例的name的’aa'‘的值,又因为ins1和ins2指向同一个内存地址,所以22/23两行打印的name是同一个值:’bb'

#17/18行初始化的时候init函数里边有print,所以打印出来了'aa'和'bb'。
#21/22行也有print,此时name值是最后一次初始化的值:bb,所以又打印了两边'bb'。
print(ins1.name)
print(ins2.name)


#所以最后打印结果是: aa bb bb bb

Tags:

最近发表
标签列表