# 单例模式: # 开发模式:单例模式 # class Student: # pass # # # s = Student() # s1 = Student() # s2 = Student() # print(s) # print(s1) # print(s2) 创建对象时地址不一样 class Singleton: # 私有化 单例的地址就存在于__instance __instance = None #私有化当前类,当singleton创建时,相当于singleton的一个对象 name="jack" # 重写__new__ def __new__(cls): print('------>__new__') if cls.__instance is None: print("----->1") cls.__instance = object.__new__(cls) #object.__init__()换成#object.__new__(cls)开辟空间 print(cls.__instance) return cls.__instance #s=Singleton()--->return--->给__init__(self):pass--->s=Singleton() else: print("----->2") return object.__init__(cls) def show(self,n): print('--------->show',Singleton.name,n) s = Singleton() s1 = Singleton() print(dir(Singleton)) # 类中的所有attribute #['_Singleton__instance', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', #'__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', #'__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', #'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', #'__str__', '__subclasshook__', '__weakref__', 'name', 'show'] print(s) print(s1) 此时空间分配地址一样
Python---单例模式
最新推荐文章于 2024-08-20 16:20:53 发布