美文网首页
python——单例模式

python——单例模式

作者: mutang | 来源:发表于2021-01-30 13:23 被阅读0次
  1. 单例设计模式
  • 目的 —— 让 创建的对象,在系统中 只有 唯一的一个实例
  • 每一次执行 类名() 返回的对象,内存地址是相同的

02. __new__ 方法

  • 使用 类名() 创建对象时,Python 的解释器 首先 会 调用 __new__ 方法为对象 分配空间

  • __new__
    
是一个 由

 

```
object
```

 基类提供的

 

内置的静态方法

,主要作用有两个:

-   1) 在内存中为对象 **分配空间**
-   2) **返回** 对象的引用
  • Python 的解释器获得对象的 引用 后,将引用作为 第一个参数,传递给 __init__ 方法

重写 __new__ 方法 的代码非常固定!

  • 重写 __new__ 方法 一定要 return super().__new__(cls)
  • 否则 Python 的解释器 得不到 分配了空间的 对象引用就不会调用对象的初始化方法
  • 注意:__new__ 是一个静态方法,在调用时需要 主动传递 cls 参数
#!/usr/bin/python3  
# -*- coding: utf-8 -*-
# _Version__: python 3.8.3
# __date__  : 2021/1/30

class MusicPlayer:

    instance = None

    def __new__(cls, *args, **kwargs):

        if cls.instance is None:
            cls.instance =  super().__new__(cls)
        return cls.instance


player1 = MusicPlayer()
player2 = MusicPlayer()
print(player1)
print(player2)

out:

<__main__.MusicPlayer object at 0x000001B9CBE4A2E0>
<__main__.MusicPlayer object at 0x000001B9CBE4A2E0>
  1. 初始化只执行一次

    class MusicPlayer:
    
        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 self.init_flag:
                return
            self.init_flag = True
            print('初始化')
    
    
    
    player1 = MusicPlayer()
    player2 = MusicPlayer()
    print(player1)
    print(player2)
    

    out:

初始化
<__main__.MusicPlayer object at 0x0000019C972B63A0>
<__main__.MusicPlayer object at 0x0000019C972B63A0>

相关文章

  • python之理解单例模式

    python之理解单例模式 1、单例模式 单例模式(Singleton Pattern)是一种常见的软件设计模式,...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 2018-06-19 Python中的单例模式的几种实现方式的及

    转载自: Python中的单例模式的几种实现方式的及优化 单例模式 单例模式(Singleton Pattern)...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • 基础-单例模式

    单例模式总结-Python实现 面试里每次问设计模式,必问单例模式 来自《Python设计模式》(第2版) 1.理...

  • python单例模式

    python单例模式实现方式 使用模板 python模块是天然的单例模式(.pyc文件的存在) 使用__new__...

  • 一套完整Python经典面试题,实力派,做内容不做标题党!

    文末含Python学习资料 1:Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例...

  • Python 面向对象7: 单例模式

    一、内容 1.1、单例设计模式 1.2、__new__方法 1.3、Python 中的单例 二、单例设计模式 2....

  • Python设计模式 之 Borg模式

    Borg模式 是单例模式在python中的变种。传统单例模式在python中,存在继承兄弟类之间状态隔离的问题。 ...

网友评论

      本文标题:python——单例模式

      本文链接:https://www.haomeiwen.com/subject/ifahtltx.html