像下面的代码:
class Test(object):
__instance = None
def __new__(cls, *args, **kwargs):
if cls.__instance:
return cls.__instance
else:
return object.__new__(cls)
def __init__(self, value):
self.value = value
print('__init__')
Singletone.__instance = self
sl = Test(100)
sl2 = Test(300)
print(sl.value)
print(sl2.value)
我猜测的输出是:
__init__
100
100
然而实际输出是:
__init__
__init__
300
300
为什么呢 ?
是的,哪怕
__new__
返回了已生成的对象,但是__init__
还是必然会执行的;相关代码如下(python2.7)
也可以简单看看这篇文章:
https://www.jianshu.com/p/f63...