第1行 class MySingleton:
第2行 __obj = None
第3行 __init_flag = True
第4行
第5行 def __new__(cls, *args, **kwargs):
第6行 if cls.__obj == None:
第7行 cls.__obj = object.__new__(cls)
第8行 return cls.__obj
第9行
第10行 def __init__(self):
第11行 if MySingleton.__init_flag:
第12行 print("init....")
第13行 MySingleton.__init_flag = False
第5行代码 def __new__(cls, *args, **kwargs):函数形参*args,**kwargs
必须写吗?且必须写成*args,**kwargs 这种写法是一种固定的格式吗?
第7行代码 cls.__obj = object.__new__(cls)是什么意思
是将object.__new__(cls)赋值给类属性ls.__obj吗?然后ls.__obj≠None,再然后第6行代码判断不成立执行第8行代码return cls.__obj
第8行代码 return cls.__obj
return返回的cls.__obj是什么意思。
对于单例模式可以这么理解吗。
修改__new__()函数就是,只允许 类 创建 一个 空实例对象。
修改__init__()函数就是,只允许对 类 创建的空实例对象属性赋 一次 值。
单例模式就是:类只允许创建一个实例对象,并只能通过这个实例对象调用类的方法。