设计模式 (python) ---> Singleton
2015-04-29 10:27
375 查看
代码:
解析:1、__new__ 来自于object类,当类中同时定义了__new__和__init__时,先调用__new__创建对象
2、__new__函数的参数与__init__不同,__new__的参数为cls:表示需要实例化的类,在这里就是指Singleton;__init__的参数为self,表示的类的实例
3、__new__返回值,一般都返回类的实例;__init__不返回值
4、可以使用super调用new:super(currentClass,cls).__new__(cls),其中super(currentClass,cls)创建了父类实例
5、在__new__的判断类变量_inst是否为空,不为空则利用object.__new__(cls)创建一个实例,返回,否则直接返回。
class Singleton(object): _inst = None def new(cls): if cls._inst is None: inst = object.new(cls) inst.init() cls._inst = inst return cls._inst def init(self): pass
解析:1、__new__ 来自于object类,当类中同时定义了__new__和__init__时,先调用__new__创建对象
2、__new__函数的参数与__init__不同,__new__的参数为cls:表示需要实例化的类,在这里就是指Singleton;__init__的参数为self,表示的类的实例
3、__new__返回值,一般都返回类的实例;__init__不返回值
4、可以使用super调用new:super(currentClass,cls).__new__(cls),其中super(currentClass,cls)创建了父类实例
5、在__new__的判断类变量_inst是否为空,不为空则利用object.__new__(cls)创建一个实例,返回,否则直接返回。
相关文章推荐
- JAVA设计模式(3) —<创建型>单例模式(Singleton)
- <设计模式>系列汇总 By python and C++
- 浅学设计模式之单例<singleton>模式 .
- C++设计模式--单一对象模式<Singleton>
- (Boolan)C++设计模式 <九> ——单例模式(Singleton)和享元模式(FlyWeight)
- JAVA设计模式(22) —<行为型>中介者模式(Mediator)
- Java构造方法私有化-->单例模式-->Runtime类的设计
- JAVA设计模式(6) —<结构型>适配器模式(Adapter)
- JAVA设计模式(7) —<结构型>装饰模式(Decorator)
- 23种设计模式总结<转>
- JAVA 装饰设计模式<转载>
- 设计模式->观察者模式
- [Python设计模式] 第22章 手机型号&软件版本——桥接模式
- <转载>常见的23种设计模式
- 《大话设计模式》--有些类也需计划生育--单例模式<Singleton>(21)
- <C/C++ 版> 设计模式 学习之 工厂模式 <1>
- 设计模式笔记(3 PROTOTYPE & SINGLETON)
- <C/C++ 版> 设计模式 学习之 工厂模式 <2>
- <C/C++ 版> 设计模式 学习之 策略模式
- Android的开发之&java23中设计模式------>组合模式