Python-单例模式-只初始化一次
来源:互联网 发布:淘宝美工都需要做什么 编辑:程序博客网 时间:2024/05/21 22:14
单例模式 只初始化一次
单例模式创建的原理就是借用了私有类属性的性质,我们知道私有类属性不能直接在类外被修改,所以用私有类属性的状态当做条件来控制类内方法的调用
下面代码中的__species负责控制__new__方法,保证实例对象只能被创建一次,创建多个对象,均指向同一个数据内存位置
__first_init负责控制__init__方法,保证再次创建的对象不能更改初始化的内容
class Animal(object): __species = None __first_init = True def __new__(cls, *args, **kwargs): if cls.__species == None: cls.__species = object.__new__(cls) return cls.__species def __init__(self,name): print("-----init----") if self.__first_init: self.name = name self.__class__.__first_init = False # 相当于Animal.__first_init = False def __str__(self): return "-------str---%s" %self.nameif __name__ == '__main__': dog = Animal('二哈') print(dog) print(id(dog)) dog2 = Animal('金毛') print(dog) print(id(dog2))执行结果:-----init-----------str---二哈139764904013104-----init-----------str---二哈139764904013104调用new方法必须要有return, 返回创建的实例对象或者是父类的__new__方法创建实例对象
由执行结果可知,两次创建的实例对象指向了同一个id,即 创建单例模式
第二次创建的实例对象dog2“金毛”,并未创建成功,仍然是第一次创建出来的实例对象dog”二哈”,即 初始化一次
阅读全文
0 0
- Python-单例模式-只初始化一次
- 单例和只初始化一次
- php单例模式实现对象只被创建一次
- php单例模式实现对象只被创建一次
- php单例模式实现对象只被创建一次 mysql单例操作类
- 简单java单例模式(单击多次,如何让窗口只显示一次)
- 利用单例模式解决WinForm中子窗体只允许打开一次的问题
- php单例模式(多次连接数据库只实例化一次)
- hp单例模式(多次连接数据库只实例化一次)
- static变量只初始化一次
- 一次单例模式引发的深思
- Python单例模式
- Python单例模式
- 单例模式(python)
- python单例模式
- python单例模式
- python 单例模式
- python单例模式
- python之常用的时间格式转换
- 《欢乐捕鱼合集》隐私政策
- hdu6169 数论 思维DP 2017多校第九场1009
- Java基础(五)流程控制语句
- WEKA中文乱码
- Python-单例模式-只初始化一次
- Maven安装教程详解
- (一)SpringBoot入门
- Js-三大事件(鼠标事件、键盘事件、html事件)
- Ubuntu16.04配置apache2+CGI
- 安卓Service
- POJ1182食物链
- windows 10 上安装zbar(python)
- LeetCode高频题目(100)汇总-Java实现