我发现这在Python中搜索单例概念。我想知道的是为什么self._instance = super(Singleton, self).__new__(self)
不会导致infinte循环。我认为调用__new__
会启动一种递归,因为self._instance
不应该被设置。
我的错误在哪里?
class Singleton(object):
_instance = None
def __new__(self):
if not self._instance:
self._instance = super(Singleton, self).__new__(self)
return self._instance
答案 0 :(得分:3)
实际上,这会调用object.__new__
,而不是Singleton.__new__
,因此没有递归。
答案 1 :(得分:2)
super(Singleton, self).__new__(self)
表示:在__new__
的超类(Singleton
)上调用object
。
因此它不会再次调用相同的__new__
,因此它不会创建无限循环。
返回后,它会将self._instance
设置为一个值。下次调用Singleton()
时,它将返回该实例。