python编写单实例总结
1 单实例的属性都可以在__init__方法中按照sell.x=x添加

2  实例内部某方法调用实例另一方法用self方式
def fun1(self,x):
    return x + self.fun2(x)
3 python生成实例的时候先执行方法,先执行__new__方法,再执行__init__方法

(若要单实例的加锁,放在__new__方法中)

单实例的方法实现  参考https://www.cnblogs.com/huchong/p/8244279.html
4.基于__new__方法实现(推荐使用,方便)
通过上面例子,我们可以知道,当我们实现单例时,为了保证线程安全需要在内部加入锁

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

import threading
class Singleton(object):
    _instance_lock = threading.Lock()

def __init__(self):
        pass

def __new__(cls, *args, **kwargs):
        if not hasattr(Singleton, "_instance"):
            with Singleton._instance_lock:
                if not hasattr(Singleton, "_instance"):
                    Singleton._instance = object.__new__(cls)  
        return Singleton._instance

obj1 = Singleton()
obj2 = Singleton()
print(obj1,obj2)

def task(arg):
    obj = Singleton()
    print(obj)

for i in range(10):
    t = threading.Thread(target=task,args=[i,])
    t.start()
打印结果如下:

<__main__.Singleton object at 0x038B33D0> <__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>
<__main__.Singleton object at 0x038B33D0>

采用这种方式的单例模式,以后实例化对象时,和平时实例化对象的方法一样 obj = Singleton()

python编写单实例总结相关推荐

  1. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  2. python教程长城图案,Python编写万花尺图案实例

    小的时候大家应该都玩过万花尺,将笔尖放置万花尺内不停的转动,便可以画出一幅精致的线稿图,现在我们不用万花尺,我们通过Python也能绘制出万花尺图案. (一)代码 #!/usr/bin/python# ...

  3. python调用扫描仪_使用Python编写简单的端口扫描器的实例分享

    单线程实现单线程实现道理比较简单,这里尝试Soket连接3389,连接成功说明端口开放,否则说明没有开远程服务.随便修改了一下就ok了,代码如下,最终得到自己的IP地址. #!/usr/bin/env ...

  4. python开发软件的实例-由Python编写的MySQL管理工具代码实例

    本文实例为大家分享了由Python编写的MySQL管理工具的具体代码,供大家参考,具体内容如下 import pymysql import pandas as pd from tkinter impo ...

  5. python写软件实例-30分钟学会用Python编写简单程序

    原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...

  6. python网站开发linux_使用Python编写Linux系统守护进程实例

    守护进程(daemon)是指在UNIX或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控.此类程序会被以进程的形式初始化.通常,守护进程没有任何存在的父进程(即PPID=1),且 ...

  7. python send 案例_python socket编程入门(编写server实例)+send 与sendall的区别与使用方法...

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

  8. 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. Pycharm 金融Python实战二:用Python编写一个金融计算器——编写函数 调用命令 实例年金现值 利率换算 净现值法 投资回报期 内部收益率及其法则(带程序和结果)

    用Python编写一个金融计算器 1.编写不需要保存的Python函数 编写简单的计算未来现金的现值的数学公式 def pv_f(fv,r,n):return fv/(1+r)**n print(pv ...

最新文章

  1. DRO:SFM任务中的深度循环优化器(阿里巴巴AI Lab)
  2. HDLBits 系列(3)Priority Encoder(Case/Casez)
  3. 位运算和典型应用详解
  4. 前端打印第三方插件_vscode mock服务插件amock教程
  5. MySQL社区介绍_mysql社区服务器
  6. unittest里discover用法_unittest框架核心要素及应用
  7. Ios 12 linux,苹果发布iOS 12.4.1,以修补越狱漏洞
  8. 采用“不可能的曲面”!沈义人:OPPO Find X3真机上手有惊喜
  9. pycharm 快捷使用
  10. Linux系统启动流程图
  11. arch linux界面优化,ArchLinux美化之界面美化
  12. Java基础篇:字符串的简单介绍
  13. 如何查看redhat社区的solution(或者订阅);redhat内容不全
  14. HDUOJ---1233还是畅通工程
  15. C# dataGridView中的数据导出到excel
  16. 华为企业网络常用图标大全(附PPT下载)
  17. 如何把 json对象转换成 数组
  18. Redis详细下载安装教程
  19. 64位Ubuntu14.04系统无法解压bin文件的解决方法
  20. poj 1284 Primitive Roots 求素数元根数

热门文章

  1. Elasticsearch之分页变量
  2. swift String
  3. Python的零基础超详细讲解(第八天)-Python的条件判断
  4. php mysql cpu100_MySQL服务器进程CPU占用100%的解决方法
  5. html月球绕地球转,CSS3地球公转,月球绕地球转
  6. memcache协议
  7. mysql 表字段大小写敏感_各种数据库大小写敏感问题总结
  8. bootstrapinput传参数_bootstrap-fileinput组件在上传时传递额外参数 Web程序 - 贪吃蛇学院-专业IT技术平台...
  9. python 访问网页 重定向_Python数据网络采集5--处理Javascript和重定向
  10. PMP考试错题记录(2)