您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

NoneType,原因和详细信息的实现

NoneType,原因和详细信息的实现

C实现保留一个单例实例。 nonetype.__new__返回单例实例。

如果没有单例实例,则x is None由于is操作员基于身份,因此您不能依赖检查。尽管None == None也是如此True,但实际上可能x == NoneTrue在何时。有关示例,请参见此答案x``None)

您可以通过重写实现此模式__new__。这是一个基本示例:

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

当然,这个简单的示例不会使创建第二个实例成为 不可能

dotnet 2022/1/1 18:33:53 有325人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶