单例设计模式:

让类创建的对象,在系统中只有唯一的实例,

使用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)

最新文章

  1. Xcode7建立自己的自定义工程和类模板
  2. javascript之聊天室(单机)来自于冷的锋刃
  3. GridView多列排序
  4. 使用cow将socks5代理转为http代理(Windows版)
  5. 用python简单处理图片(1):打开\显示\保存图像
  6. jQuery easyui 提示框
  7. 下一代大数据系统和4S标准
  8. C++ 学习资料搜寻与学习(第一期)(未完待续)
  9. Linux 内核源码中likely()和unlikely()
  10. Spring 实现自定义 bean 的扩展
  11. vue搭建项目前奏曲——vue-cli
  12. Mac Webview OC与JS交互实现
  13. 设计比较好,有助于学习的Github上的iOS App源码 (中文)
  14. 细说java系列之HashMap原理
  15. docker中,将容器中的文件拷贝到宿主机上
  16. android编译错误--/usr/bin/ld: cannot find -lz
  17. 【Unity】11.7 布料
  18. 用OpenGL绘制平滑着色的三角形与相交区域的混合着色
  19. JAVA解压文件
  20. hadoop下安装mahout

热门文章

  1. [GO]无缓冲通道(unbuffered channel)
  2. [GO]结构体成员的使用:指针变量
  3. rabbitMQ日常管理(转)
  4. nignx ssl 配置
  5. vSphere5.5体系结构
  6. python-字符串-技巧
  7. critical section的用法
  8. C/C++ Pthread线程
  9. 怎么用谷歌浏览器查看请求或响应HTTP头?
  10. [LeetCode 题解]: Permutation Sequcence