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会不一样的

    评论

报告相同问题?

悬赏问题

  • ¥15 求推荐发表需要付费的深度学习遥感场景分类SCI期刊
  • ¥15 无法在java控制台录入文字
  • ¥15 flutter网页应用用python的http服务器访问速度慢
  • ¥15 VESTA绘图原子颜色显示异常
  • ¥15 天翼云搭建多ip l2tp
  • ¥15 python实现CAD识图
  • ¥15 如何实现在renpy中创建并应用不同大小尺寸对话框?
  • ¥15 table表格有一列是固定列 滑动到最下面时 固定的那一列有几行没显示出来
  • ¥20 单细胞数据注释时报错
  • ¥15 vscode编译ros找不到头文件,cmake.list文件出问题,如何解决?(语言-c++|操作系统-linux)