美文网首页
Python 总结之单例模式

Python 总结之单例模式

作者: Elvis_zhou | 来源:发表于2018-05-10 23:25 被阅读0次

单例模式

1.什么是单例模式
确保一个类只有一个实例对象。
2.为什么用单例模式
在日常电脑使用中,往往会用到任务管理器,回收站等等,这些程序在操作系统中就是唯一的。这样就不会让系统中出现多个相同程序导致内存资源的浪费。

实现单例模式的几种方式

1.使用模块
其实,Python 的模块就是天然的单例模式,因为模块在第一次导入时,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,而不会再次执行模块代码。因此,我们只需把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了。如果我们真的想要一个单例类,可以考虑这样做:

mysingleton.py

class Singleton(object):
    def foo(self):
        pass
singleton = Singleton()

将上面的代码保存在文件 mysingleton.py 中,要使用时,直接在其他文件中导入此文件中的对象,这个对象即是单例模式的对象

from mysingleton import singleton

2.基于new方法实现(推荐)
我们知道,当我们实例化一个对象时,是先执行了类的new方法(我们没写时,默认调用object.new),实例化对象;然后再执行类的init方法,对这个对象进行初始化,所以我们可以基于这个,实现单例模式

class Singleton(object):
    __instance = None  # 设置一个类属性(只创建一个对象)
    is_first_run = True  # 设置一个类属性(只初始化一次)

    def __new__(cls, age):
        if not cls.__instance:   # 这里对象还没创建所以是cls调用
            cls.__instance = object.__new__(cls)
        return cls.__instance

    def __init__(self, age):
        if self.is_first_run:
            self.age = age
            self.is_first_run = False  # 这里new创建了对象,所以用self

a = Singleton(18)
b = Singleton(20)
print(id(a))
print(id(b))
print(b.age)
print(a.age)

打印结果如下:

140063755106960
140063755106960
18
18

相关文章

  • 基础-单例模式

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

  • Python 总结之单例模式

    单例模式 1.什么是单例模式确保一个类只有一个实例对象。2.为什么用单例模式在日常电脑使用中,往往会用到任务管理器...

  • Python之单例模式总结

    一、单例模式 a、单例模式分为四种:文件,类,基于__new__方法实现单例模式,基于metaclass方式实...

  • Java23种设计模式之「单例模式」

    单例模式 之 holder 模式 (推荐) 单例模式 之 饱汉模式(懒汉模式) 单例模式 之 双重锁检查 (Dou...

  • python设计模式(十二):结构型模式总结

    前面总结了创造型结构模式《python设计模式(四):单例模式及创建型模式总结》,及其创造性模式的常用几种模式总结...

  • python之理解单例模式

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

  • python中OOP的单例

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

  • 单例

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

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

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

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

网友评论

      本文标题:Python 总结之单例模式

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