1
hareandlion 2021-01-23 21:54:42 +08:00 1
这要看单例模式的对象是在哪里创建的了吧,一般情况下单例模式所引用的对象是在被 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)}') ``` |
2
abersheeran 2021-01-24 01:56:17 +08:00 via Android 2
|