Python——单例设计模式
2024-10-21 11:46:04
单例设计模式:
让类创建的对象,在系统中只有唯一的实例,
使用python类内置的__new__()方法实现,__new__()方法在创建对象时会被自动调用,通过重写__new__()方法,使得无论用类型创建多少个对象,内存中都只创建一个对象的实例,此时__new__()方法必须返回此内置函数的调用,及return super().__new__(cls)
class MyClass():
# 类属性,记录第一个被创建对象的引用
instance = None def __new__(cls, *args, **kwargs):
if cls.instance is None:
cls.instance = super().__new__(cls)
return cls.instance def __init__(self):
print("初始化方法!") a = MyClass()
print(a)
b = MyClass()
print(b)
若想使得初始化动作只执行一次:
class MyClass():
# 类属性,记录第一个被创建对象的引用
instance = None
# 记录是否执行过初始化动作
init_flag = False
def __new__(cls, *args, **kwargs):
if cls.instance is None:
cls.instance = super().__new__(cls)
return cls.instance def __init__(self):
if MyClass.init_flag:
return
print("初始化方法!")
MyClass.init_flag = True a = MyClass()
print(a)
b = MyClass()
print(b)
最新文章
- Xcode7建立自己的自定义工程和类模板
- javascript之聊天室(单机)来自于冷的锋刃
- GridView多列排序
- 使用cow将socks5代理转为http代理(Windows版)
- 用python简单处理图片(1):打开\显示\保存图像
- jQuery easyui 提示框
- 下一代大数据系统和4S标准
- C++ 学习资料搜寻与学习(第一期)(未完待续)
- Linux 内核源码中likely()和unlikely()
- Spring 实现自定义 bean 的扩展
- vue搭建项目前奏曲——vue-cli
- Mac Webview OC与JS交互实现
- 设计比较好,有助于学习的Github上的iOS App源码 (中文)
- 细说java系列之HashMap原理
- docker中,将容器中的文件拷贝到宿主机上
- android编译错误--/usr/bin/ld: cannot find -lz
- 【Unity】11.7 布料
- 用OpenGL绘制平滑着色的三角形与相交区域的混合着色
- JAVA解压文件
- hadoop下安装mahout