Python——单例设计模式
单例设计模式:
让类创建的对象,在系统中只有唯一的实例,
使用python类内置的__new__()方法实现,__new__()方法在创建对象时会被自动调用,通过重写__new__()方法,使得无论用类型创建多少个对象,内存中都只创建一个对象的实例,此时__new__()方法必须返回此内置函数的调用,及return super().__new__(cls)
class MyClass(): # 类属性,记录第一个被创建对象的引用 instance = None def __new__(cls, *args, **kwargs): if cls.instance is None: cls.instance = super().__new__(cls) return cls.instance def __init__(self): print("初始化方法!") a = MyClass() print(a) b = MyClass() print(b)
若想使得初始化动作只执行一次:
class MyClass(): # 类属性,记录第一个被创建对象的引用 instance = None # 记录是否执行过初始化动作 init_flag = False def __new__(cls, *args, **kwargs): if cls.instance is None: cls.instance = super().__new__(cls) return cls.instance def __init__(self): if MyClass.init_flag: return print("初始化方法!") MyClass.init_flag = True a = MyClass() print(a) b = MyClass() print(b)