• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python设计模式之单例模式实例

Python设计模式之单例模式实例

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python 单例模式,java单例模式实例,单例模式实例,单例模式java,单例模式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

注:使用的是Python 2.7。

一个简单实现

if __name__ == '__main__':
    foo1 = Foo.getinstance()
    foo2 = Foo.getinstance()
    print id(foo1)
    print id(foo2)
    print id(Foo())</div>
输出的前两个结果是相同的(id(foo1)与id(foo2)的值相同),第三个结果和前两个不同。这里类方法getinstance()用于获取单例,但是类本身也可以实例化,这样的方式其实并不符合单例模式的要求。但是这样做也有好处,代码简单,大家约定好这样子调用就行了。但是最好在类的命名上也体现了出来这是一个单例类,例如Foo_singleton。

换一个思路

先说一下init和new的区别:

if __name__ == '__main__':
    foo = Foo()</div>
运行结果是:

new是一个类方法,会创建对象时调用。而init方法是在创建完对象后调用,对当前对象的实例做一些一些初始化,无返回值。如果重写了new而在new里面没有调用init或者没有返回实例,那么init将不起作用。以下内容引用自http://docs.python.org/2/reference/datamodel.html#object.new

If __new__() does not return an instance of cls, then the new instance's __init__() method will not be invoked.</div>
这样做:

    def __new__(cls, *args, **kwargs):
        print 'new'
        if cls.__instance == None:
            cls.__instance = cls.__new__(cls, *args, **kwargs)
        return cls.__instance

if __name__ == '__main__':
    foo = Foo()</div>

    错误如下:

而这样也有一样的错误:

if __name__ == '__main__':
    foo = Foo()</div>
该怎么做呢?

下面参考了http://stackoverflow.com/questions/31875/is-there-a-simple-elegant-way-to-define-singletons-in-python/31887#31887:

    def hi(self):
        print 'hi, world'
        print 'hi, letian'

if __name__ == '__main__':
    foo1 = Foo()
    foo2 = Foo()
    print id(foo1)
    print id(foo2)
    print isinstance(foo1, object)
    print isinstance(foo1, Foo)
    foo1.hi()</div>
运行结果:

     

您可能想查找下面的文章:

  • Python单例模式实例详解
  • python相似模块用例
  • Python设计模式中单例模式的实现及在Tornado中的应用
  • 常见的在Python中实现单例模式的三种方法
  • python单例模式实例分析
  • 常见的在Python中实现单例模式的三种方法
  • python单例模式实例分析
  • Python单例模式实例分析
  • Python单例模式实例分析
  • Python设计模式之单例模式实例

相关文章

  • Python中.py文件打包成exe可执行文件详解
  • Python利用ansible分发处理任务
  • Python深入06——python的内存管理详解
  • Pyhthon中使用compileall模块编译源文件为pyc文件
  • Python多维/嵌套字典数据无限遍历的实现
  • Python压缩解压缩zip文件及破解zip文件密码的方法
  • python中zip和unzip数据的方法
  • Python实现针对中文排序的方法
  • Python的print用法示例
  • python实用代码片段收集贴

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python的Django框架安装全攻略
    • Python中使用ConfigParser解析ini配置文件实例
    • 一个计算身份证号码校验位的Python小程序
    • 教你用python3根据关键词爬取百度百科的内容
    • python mysqldb连接数据库
    • python实现封装得到virustotal扫描结果
    • python3.3实现乘法表示例
    • Python按行读取文件的实现方法【小文件和大文件读取】
    • Python入门教程之if语句的用法
    • python xml解析实例详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有