Luna_Lovegood_001 2020-12-24 16:44 采纳率: 40%
浏览 2

python 实现单例

请问单例模型时候,为什么两个对象的id不一样

class Singleton():
    class _A():

        def __init__(self):
            pass

        def display(self):
            return id(self)

    _instance = None

    def __init__(self):

        if Singleton._instance is None:
            Singleton._instance = Singleton._A()

    def __getattr__(self, attr):
        return getattr(self._instance, attr)

if __name__ == "__main__":
    s1 = Singleton()
    s2 = Singleton()
    print(id(s1),s1.display())
    print(id(s2),s2.display())
    print(s1 is s2) # 此处输出False

为何 

print(s1 == s2) 是False呢

  • 写回答

2条回答 默认 最新

  • LC1356 2020-12-24 17:11
    关注

    你创建的不是 Singleton 的单例,而是 Singleton._instance 的单例,在创建 Singleton 实例时已经分配了新的内存空间了,id会不一样的

    评论

报告相同问题?