C实现保留一个单例实例。 nonetype.__new__
返回单例实例。
如果没有单例实例,则x is None
由于is
操作员基于身份,因此您不能依赖检查。尽管None == None
也是如此True
,但实际上可能x == None
是True
在何时。有关示例,请参见此答案。x``None
)
class Singleton(object):
_instance = None
def __new__(cls, *args, **kwargs):
if Singleton._instance is None:
Singleton._instance = object.__new__(cls, *args, **kwargs)
return Singleton._instance
if __name__ == '__main__':
s1 = Singleton()
s2 = Singleton()
print 's1 is s2:', s1 is s2
print 'id(s1):', id(s1)
print 'id(s2):', id(s2)
输出:
s1是s2:真实 ID(s1):4506243152 id(s2):4506243152
当然,这个简单的示例不会使创建第二个实例成为 不可能 。