单例,顾名思义,在使用过程中,每次在类实例化时,只有一个对象。单例书写:
方式一:
Python的模块他自身就是一个单例的,因为它在程序中只被加载一次。故,可以直接写一个模块,将你需要的方法和属性,写在模块中当做函数和模块作用域的全局变量即可,根本不需要写类。例如:
# singleton.py
class Singleton(object):
def test(self):
pass
singleton_obj = Singleton()
ceshi.py
from singleton import singleton_obj
singleton_obj.test()
方式二:
class Singleton(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
orig = super(Singleton, cls)
cls._instance = orig.__new__(cls, *args, **kwargs)
return cls._instance
obj1 = Singleton()
obj2 = Singleton()
print(obj1 == obj2) # True
print(id(obj1)) # 2109926388232
print(id(obj2)) # 2109926388232
待续。。
以上。