#!/usr/bin/env python # -*- coding: utf-8 -*- # __author__=="HAI" import threading class Singleton(object): _instance_lock = threading.Lock() def __init__(self, height=None, name=None, age=None, sex=None): self.name = name self.age = age self.sex = sex self.height = height @classmethod def instance(cls, *args, **kwargs): with Singleton._instance_lock: if not hasattr(Singleton, "_instance"): Singleton._instance = Singleton(*args, **kwargs) return Singleton._instance class Singleton2(object): """1""" _instance = None __flag = True def __init__(self, name, *args, **kwargs): if self.__flag: # 属性只初始化一次 Singleton2.__flag = False self.name = name def __new__(cls, *args, **kw): with Singleton._instance_lock: if not cls._instance: Singleton2._instance = super(Singleton2, cls).__new__(cls) return Singleton2._instance if __name__ == '__main__': # obj = Singleton.instance('1', 2, sex=3, age=4) # print(obj.name) obj = Singleton2('心心') obj2 = Singleton2('ga ') print(id(obj), id(obj2)) print(obj.name, obj2.name) pass
单例
最新推荐文章于 2023-03-10 15:41:36 发布