python学习 __new__方法/创建单例对象
class Dog(object): def __init__(self): print('__init__方法') def __del__(self): print('__del__方法') def __str__(self): print('__del__方法') return "对象的描述信息" def __new__(cls, *args, **kwargs): #cls此时是Dog指向的那个类对象 # print(id(cls)) print('__new__方法') return object.__new__(cls) # print(id(Dog)) xtq=Dog() """ Dog()相当于要做三件事: 1、调用__new__方法来创建对象,然后找一个变量接收__new__的返回值,这个返回值表示 创建出来的对象的引用 2、__init__(刚刚创建出来的对象的引用) 3、返回对象的引用 """
class Dog(object): __instance=None __init_flag=False # 创建单例对象(意思就是只创建一次对象,也就是不管创建几次,对象都是同一个) def __new__(cls, *args, **kwargs): if cls.__instance==None: cls.__instance=object.__new__(cls) return cls.__instance else: return cls.__instance #return 返回上一次创建的对象的引用 #只初始化一次对象 def __init__(self,name): if self.__init_flag==False: self.__init_flag=True self.name=name dog=Dog('哈哈') print(dog.name) print(id(dog)) dog1=Dog('嘿嘿') print(dog1.name) print(id(dog1))
posted on 2019-07-31 22:04 cherry_ning 阅读(171) 评论(0) 收藏 举报
浙公网安备 33010602011771号