(一)、如何反序的迭代一个序列?

# 如果是一个list,最来的解决方案是tempList = [1,2,3,4]
tempList.reverse()
for x in tempList:print x
# 如果不是一个list,最通用的解决方案
print '\n- - - - - - - - - - - -'
tempTuple = (1,2,3,4)
for i in range(len(tempTuple)-1,-1,-1):print tempTuple[i]

(二)、 如何用Python来进行查询和替换一个文本字符串?

# Python 中的 replace() 可以进行字符串替换
tempStr = "Hello java, Hello Python , Use JavaScript"
print tempStr.replace("Hello","Use")# Python 中的 sub() 可以用来查找并替换字符串, sub() 是使用正则来匹配
import re
rex = r'(Hello|Use)'
print re.sub(rex, 'Bye', tempStr)

(三)、使用Python实现单例模式。

  • 所谓单例就是一个类从始至终只能产生一个实例。
  • 方法一:使用new方法
    • new方法中把类实例绑定到类变量_instance上,如果cls._instance为None表示该类还没有实例化过,实例化该类并返回。如果cls_instance不为None表示该类已实例化,直接返回cls_instance
  • 方法二:使用装饰器(decorator)
  • 方法三:使用metaclass(元类)
  • 方法四:共享属性
    • 所谓单例就是所有的引用(实例,对象)拥有相同的属性和方法,同一个类的实例天生都会有相同的方法,那我们只需要保证同一个类所产生的实例都具有相同的属性。所有实例共享属性最简单直接的方法就是共享dict属性指向。
  • 方法五:Python模板

方法一 使用new方法

class SingleTon(object):def __new__(cls, *args, **kwargs):if not hasattr(cls,'_instance'):cls._instance = object.__new__(cls,*args,**kwargs)return cls._instanceclass TestClass(SingleTon):a = 1test1 = TestClass()
test2 = TestClass()print test1.a, test2.a
print id(test1),id(test2)

方法二:使用装饰器(decorator)

def SingleTon(cls, *args, **kwargs):instances = {}def _singleton():if cls not in instances:instances[cls] = cls(*args, **kwargs)return instances[cls]return _singleton@SingleTon
class TestClass(object):a = 1test1 = TestClass()
test2 = TestClass()print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)

方法三:使用metaclass(元类)

class SingleTon(type):def __init__(cls,name,bases,dict):super(SingleTon,cls).__init__(name,bases,dict)cls._instance = Nonedef __call__(cls, *args, **kwargs):if cls._instance is None:cls._instance = super(SingleTon,cls).__call__(*args, **kwargs)return cls._instanceclass TestClass(object):__metaclass__ = SingleTontest1 = TestClass()
test2 = TestClass()test1.a = 1
print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)

方法四:共享属性

class SingleTon(object):_state = {}def __new__(cls, *args, **kwargs):obj = object.__new__(cls, *args, **kwargs)obj.__dict__ = cls._statereturn objclass TestClass(SingleTon):a = 1print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)

方法五:Python模板

#
class My_SingleTon(object):def foo(self):pass
my_sign = My_SingleTon()my_sign.foo()

Python代码篇-单例模式(五种实现单利方式)相关推荐

  1. python中函数的五种参数传递的方式

    在学习了python函数之后发现它的函数值传递有几种是不同于其他语言的,详细内容参见下面的代码,我都有做内容解释 #位置传参,很简单,就平常使用的方式 #关键字传参 def use_in(name,a ...

  2. python list方法说明_对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...

  3. python list find函数_对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...

  4. OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...

    OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式 以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列 ...

  5. 集丰照明|LED五种调光方式详解(DALI/DMX/0-10V/PWM/可控硅)

    LED五种调光方式详解 LED的发光原理同传统照明不同,同功率的 LED 光源,因其采用的芯片不同,电流电压参数则不同,故其内部布线结构和电路分布也不同,导致了各生产厂商的光源对调光驱动的要求也不尽相 ...

  6. 下列哪个不是目前python里的内置模块-python引入模块的五种方式与内置模块

    模块导入的五种方式 1.import 模块名 2.from 模块名 import 方法名 3.from 模块名 import * 4.import 模块名 as 别名 5.from 模块名 impor ...

  7. python代码解读软件_5种带你轻松分析Python代码的软件库

    [51CTO.com快译]通常,人们会使用两种速度来衡量某种编程语言的优劣,即:开发速度和执行速度.对于Python而言,大家往往受益的是它能够快速地编写代码,而忽略了它是否能够快速地运行,并及时完成 ...

  8. python引入模块的五种方式与内置模块

    模块 自定义模块 模块的定义与分类 模块的定义 简而言之,模块就是一些常用功能的集合,我们把一些常用的函数.变量或者方法写到一个python文件中,那么这个python文件就是模块,使用模块可以避免我 ...

  9. vba九九乘法表代码_用五种方法利用EXCEL制作九九乘法表

    昨天因贪玩了一下,一天都和同事在外面玩,计划就是这一天让自己啥也不做,一天玩下来,觉得好累,原来玩也是很累的.既然在外面放松了一天了,今天就把昨天的九九乘法表的制作方法给补上来.事实上九九乘法表的制作 ...

最新文章

  1. findler mac 隐藏文件_Fiddler使用文档
  2. 重启mysql的方法
  3. java filestream 包,java.io.FileOutputStream.write(byte[] b)
  4. 图片三:numpy制作雪碧图(如何将多个图片拼接成一张图片)
  5. java旺季机票_java-第四章-机票价格受到淡季旺季的影响,编写的小程序
  6. SAP CRM中间件下载时数据库表CRMATAB为空的处理方法
  7. 更新mac系统中homebrew的源,更改为清华大学的源
  8. 深入Asyncio(八)异步迭代器
  9. Node.js 教程第五篇——request
  10. mysql 好用 客户端_5款好用的mysql客户端
  11. win10计算机系统优化设置,Win10不如win7?超实用win10系统优化设置,让电脑运行更流畅!...
  12. C#之使用RichTextBox 实现简单的txt编辑器
  13. Docker编译安装httpd
  14. 此计算机未运行正版windows,最近一开机就有以下之警告:此Windows副本未通过正版Windows验证。...
  15. 我的学习工作经历,一个园林专业中专毕业生的IT之路 学习编程 创业
  16. 豆沙绿护眼色样式在html中的代码
  17. HMM(隐马尔可夫)笔记
  18. nRF51822定时器设置
  19. 第一次使用acme.sh 手动生成证书(DNS手动模式)
  20. 3D max新增超级阵列功能Array !

热门文章

  1. both and和both of 得用法 和区别
  2. Python爬虫入门教程 95-100 帮粉丝写Python爬虫之【全网通用评论爬虫】
  3. 浪潮之巅第十一章 — 幕后的英雄:风险投资(Venture Capital)
  4. java 拨打电话_快速拨打电话号码
  5. 关于共享单车乱摆放问题的调研报告
  6. 画好了一个杯子,哈哈!
  7. 学插画的线上机构排名
  8. Java-对象转型(casting)
  9. 微软文本转语音小工具(Text to speech)网页版
  10. 新型光电复合缆特点及其应用