产生的对象的方式__new__与单例模式
1.产生对象的原理 __new__ 方法
class testclass: #类内部在new一个对象之前默认生成一个空的对象(内存空间),然后再调用__init__ def __new__(cls, *args, **kwargs): # 声明:python __new__ 为类中的静态方法 return object.__new__(cls) #通过object的new方法把本类作为参数去创建一个空对象 def __init__(self,name): self.name = name obj = testclass('egon') print(obj.name) # egon
2. 基于__new__的单例模式
# 基于__new__的单例模式 class sington: _instance = None def __new__(cls, *args, **kwargs): # Python的实现机制 __new__ 为类中的静态方法 if not cls._instance: # 静态方方法 cls._instance = object.__new__(cls) return cls._instance obj1 = sington() obj2 = sington() # print(sington) # <class '__main__.sington'> # print(sington.__class__) #<class 'type'> # print(sington) # <class '__main__.sington'> print(sington.__dict__) # 打印类的名称空间 print(obj1.__dict__) # 打印对象的名称空间 print(obj1.__class__) # 打印对象的类 print(obj1.__class__.__name__) # 打印对象的类名