产生的对象的方式__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__) # 打印对象的类名
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步