跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python reload 对单例对象的影响
未分類
5 2 月 2021

Python reload 对单例对象的影响

Python reload 对单例对象的影响

資深大佬 : towry 8

假如在 python 中使用了单例模式,维护了一个变量,那么在模块被 reload 后,这个变量会变吗?
大佬有話說 (2)

  • 資深大佬 : hareandlion

    这要看单例模式的对象是在哪里创建的了吧,一般情况下单例模式所引用的对象是在被 reload 的 module 里初始化的,那 reload 会创建新的对象,而如果单例引用的是存在内存里类似 int 的基本类型对象,reload 之后依然会引用原本的对象。

    si_cls.py
    “`
    #!/bin/python
    # coding: utf-8

    ph = {‘ab’: 2}
    # ph = 32

    class SI:
    def __new__(cls, *args, **kwargs):
    return ph

    def id(self):
    return id(self)

    si_instance = SI()
    “`

    test.py
    “`
    #!/bin/python
    # coding: utf-8

    import si_cls
    from importlib import reload

    s1 = si_cls.SI()
    s2 = si_cls.SI()

    print(f’id(s1)={id(s1)}, id(s2)={id(s2)}, id(si_instance)={id(si_cls.si_instance)}’)

    reload(si_cls)

    s1 = si_cls.SI()
    s2 = si_cls.SI()

    print(f’id(s1)={id(s1)}, id(s2)={id(s2)}, id(si_instance)={id(si_cls.si_instance)}’)

    “`

  • 資深大佬 : abersheeran

    巧了。以前研究过相关的东西写了一篇博客留作记录。你看看吧。https://aber.sh/articles/Python-Reload/

    当时写的可能比较乱,如果有没看懂的部分可以文章下发评论问。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具