Python单例设计模式

(1)为什么使用设计模式?

  使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

(2)单例设计模式概念

  让类创建的对象只有唯一的一个实例,即每次执行  类名() 返回的对象,内存地址都是相同的。

(3)__new__与__init__方法的作用:

  使用 类名() 创建对象时,python解释器首先会调用 __new__ 方法为对象分配内存空间,该方法为基类object内置的静态方法,一般无需手动调用。

        __new__方法的作用有两个:①为对象分配内存空间;②返回对象引用。

   __init__方法的作用有两个:①对象初始化;②定义实例属性。

(4)如何实现单例设计模式?

  实现单例设计模式,其实就是重写object基类的内置静态方法__new__,实现每次调用 类名()返回的对象的内存地址不变。

 1 #! /usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 class MusicPlayer(object):
 4     instance = None
 5     def __new__(cls, *args, **kwargs):
 6         if cls.instance is None:
 7             print("创建对象,分配空间")
 8             cls.instance = super().__new__(cls) # 一定要重新调用父类的__new__方法,并添加参数cls,表示当前调用的类
 9         return cls.instance   #返回对象的引用,解释器才会继续调用__init__方法初始化对象
10 
11     def __init__(self):
12         print("播放器初始化")
13 
14 if __name__ == '__main__':
15     piano = MusicPlayer()
16     print(piano)
17 
18     guitar = MusicPlayer()
19     print(guitar)

 

                     

posted @ 2019-09-01 21:55  飞走失恋  阅读(142)  评论(0编辑  收藏  举报