方法一:在定义类的文件中实例一个对象,在其他文件中需要使用这个类时直接对这个对象进行操作。例如:
Singleton文件中:
class Singleton(object):
pass
obj = Singleton()
其他文件中需调用时:
from Singleton import obj
# 然后直接对obj进行操作
# 或者将obj赋给该文件中的变量,进行操作
方法二:使用__new__方法,创建对象时会先调用__new__方法判断是否存在该类对象,不存在则新建,否则直接返回之前创建的对象,然后执行__init__方法。
class Singleton(object):
_instance_lock = threading.Lock()
def __init__(self):
pass
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
with Singleton._instance_lock:
if not hasattr(cls, '_instance'):
Singleton._instance = super().__new__(cls)
return Singleton._instance