- 使用
__new__
方法
class Singleton(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
bef = super(Singleton, cls)
cls._instance = bef.__new__(cls, *args, **kwargs)
return cls._instance
class sClass(Singleton):
a = 1
- 共享属性
class Singleton(object):
_state = {}
def __new__(cls, *args, **kwargs):
bef = super(Singleton, cls).__new__(cls, *args, **kwargs)
bef.__dict__ = cls._state # 创建实例时把所有实例的`__dict__`指向同一个字典
return bef
class sClass(Singleton):
a = 1
- 装饰器版本
def Singleton(cls, *args, **kwargs):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return getinstance
@Singleton
class sClass:
...
- import方法
# pSingleton.py
class Singleton(object):
def foo(self):
pass
mSingleton = Singleton()
# Using
from pSingleton import mSingleton
mSingleton.foo()
(最近更新:2019年05月20日)
来源:https://blog.csdn.net/Watkins_OS/article/details/100043143