一、基于__new__
class Single: _instance = None def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(Single, cls).__new__(cls, *args, **kwargs) return cls._instance class Demon(Single): def foo(self): print("Hi") d1 = Demon() d2 = Demon() print(id(d1)) # 2110545800776 print(id(d2)) # 2110545800776
二、基于模块
重点:
1、一个模块在一个项目中只加载一次, 然后从pyc中取
2、一个对象只加载一次
注意:单例对象执行同一个内存空间
本文深入探讨了单例模式的两种实现方式:基于__new__方法和模块加载机制。通过具体代码示例,展示了如何确保一个类只有一个实例,并提供全局访问点。这对于控制资源访问和减少内存开销具有重要意义。
1501

被折叠的 条评论
为什么被折叠?



