设计模式_单例模式的懒汉式实例化
2023-09-11 14:21:27 时间
单例模式的懒汉式
在导入模块的时候,可能会无意中创建一个对象,但当时根本用不到
懒汉式实例化能够确保在实际需要时才创建对象
懒汉式实例化是一种节约资源并仅在需要时才创建它们的方式
class Singleton:
_instance = None
def __init__(self):
if not Singleton._instance:
print("__init__的方法使用了,在静态 getinstance 方法才创建了实例对象")
else:
# 在静态 getinstance 方法,改变了 _instance 的值
print("实例已创建",self.getinstance())
@classmethod
def getinstance(cls):
'''
在 getinstance 内写创建实例的语句
如果在 __init__ 内写明创建语句
如果那个对象创建之后没有立即使用,会造成资源浪费
'''
if not cls._instance:
cls._instance = Singleton()
'''
创建实例化对象时,还会再调用一次 __init__方法
cls._instance = Singleton() 修改了 _instance 属性的状态
'''
return cls._instance
s = Singleton()
# __init__的方法使用了,在静态 getinstance 方法才创建了实例对象
print('已创建对象',Singleton.getinstance())
'''
此时才是真正的创建了对象
运行结果:
__init__的方法使用了,在静态 getinstance 方法才创建了实例对象
已创建对象 <__main__.Singleton object at 0x00000206AA2436D0>
'''
print(id(s))
# 2227647559520
s1 = Singleton()
# 实例已创建 <__main__.Singleton object at 0x00000206AA2436D0>
print('已创建对象',Singleton.getinstance())
# 已创建对象 <__main__.Singleton object at 0x00000206AA2436D0>
print(id(s1))
# 2227647561248
创建一个静态变量 _instance = None
在 __init__ 方法内部,不进行创建对象的操作
在类方法 getinstance 方法中,进行类的创建
注:
此时会调用一次 __init__ 方法
创建对象时
s = Singleton() 还会调用一次 __init__ 方法
2020-05-09
相关文章
- 实例解读:网络设备热备部署的三种模式
- 实例解析Python设计模式编程之桥接模式的运用
- Python中类的继承代码实例
- Pythonnumpy提取矩阵的某一行或某一列的实例
- 实现在tomcat中跑多个服务器实例
- OpenSSL s_server / s_client 应用实例
- python 排序算法总结及实例详解
- python文件和目录操作方法大全(含实例)【python】
- 蒙特卡罗仿真(1):入门求生指南(Python实例)
- scala元组的创建入门实例
- Java Radom类的使用方法实例
- servlet单实例多线程模式
- iOS 字典转模型纯swift框架HandyJSON使用实例:本地存取
- Qt中的TreeView多级下拉框 代码实例?
- Qt图形视图实例:飞舞的蝴蝶
- 单例模式实例——神码设计模式
- VB编程:全局变量&控件数组实例简单计算器-12
- 在WildFly中运行多个standalone模式的实例
- 阿里云服务器包年包月/按量计费/抢占式实例模式选择方法
- C#创建Windows窗体应用程序实例1【姓名输入】
- Adroid游戏开发实例讲解(三)-小蝌蚪找妈妈附源码
- MVC模式下 provider: SQL Network Interfaces, error: 50 - 发生了 Local Database Runtime 错误。指定的 LocalDB 实例不存在