单例模式
单例模式是一种设计模式
单例模式:整个过程中只有一个实例,所有生成分实例都指向同一块内存空间
方式一:通过类的绑定方法
当用户输入端口和地址,实例化产生新对象
当用户输入端口和地址,每次拿到的对象,是同一个
class Single:
_single_model = None
def __init__(self, port, host):
self.port = port
self.host = host
@classmethod
def single_cls(cls):
import settings
if not cls._single_model:
cls._single_model = cls(settings.PORT, settings.HOST)
return cls._single_model
# 拿到的对象会是同一个
s = Single.single_cls()
s2 = Single.single_cls()
print(s)
print(s2)
第二种:通过装饰器来实现
def get_siggle(cls):
siggle = None
def wrapper(*args, **kwargs):
if len(args) != 0 or len(kwargs) != 0:
res = cls(*args, **kwargs)
return res
else:
import settings
nonlocal siggle
if not siggle:
siggle = cls(settings.PORT, settings.HOST)
return siggle
return wrapper
@get_siggle
class Single:
def __init__(self, port, host):
self.port = port
self.host = host
s1 = Single()
s2 = Single()
print(s1)
print(s2)

浙公网安备 33010602011771号