文档章节

Python如何实现单例模式?其他23中设计模式python如何实现?

每天学Python
 每天学Python
发布于 01/20 14:25
字数 464
阅读 324
收藏 0

单例模式主要有四种方法:new、共享属性、装饰器、import。

# __ new__方法:

class Singleton(object):
    def __new__(cls, *args, **kw): 
        if not hasattr(cls, '_instance'): 
            orig = super(Singleton, cls) 
            cls._instance = orig.__new__(cls, *args, **kw) 
            return cls._instance 
class MyClass(Singleton): 
    a = 1
# 共享属性:
# 创建实例时把所有实例的__ dict__指向同一个字典,这样它们就具有了相同的属性和方法。

class Borg(object): 
    _state = {} 
    def __new__(cls, *args, **kw): 
        ob = super(Borg, cls).__new__(cls, *args, **kw) 
        ob.__dict__ = cls._state 
        return ob 
class MyClass2(Borg): 
    a = 1
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
# 装饰器版本

def singleton(cls, *args, **kw): 
    instances = {} 
    def getinstance(): 
        if cls not in instances: 
            instances[cls] = cls(*args, **kw) 
            return instances[cls] 
        return getinstance 
@singleton 
class MyClass:
#import方法,作为python的模块是天然的单例模式

# mysingleton.py 
class My_Singleton(object): 
    def foo(self): 
        pass 
    my_singleton = My_Singleton() 
# to use 
from mysingleton import my_singleton 
my_singleton.foo()

其他23中设计模式基本分为创建型、结构型和行为型模式。 创建模式,提供实例化的方法,为适合的状况提供相应的对象创建方法。 结构化模式,通常用来处理实体之间的关系,使得这些实体能够更好地协同工作。 行为模式,用于在不同的实体间建立通信,为实体之间的通信提供更容易,更灵活的通信方法。 各模式的实现可根据其特点编写代码。

© 著作权归作者所有

每天学Python
粉丝 0
博文 65
码字总数 95713
作品 0
广州
私信 提问
加载中

评论(0)

写代码也有“套路”-谈谈设计模式

编程教室开了这么久,已经有很多人从完全零基础的小白成为了会写代码的菜鸟程序员,能够自己独立开发程序。不过到此阶段,常常会遇到瓶颈,感觉功能可以实现,但代码看起来有些别扭: 代码中...

crossin
2019/02/22
97
0
python 与设计模式 ——工厂与单例

python 与设计模式 源码地址:[http://git.oschina.net/duoduo3_69/python_design_pattern][1] git checkout v001(这个版本与此篇博客相符) zarkpy里面运用了很多设计模式,以前一直很费解p...

duoduo3_69
2013/11/27
930
0
深度解密Python工厂类相关模式

认识工厂类相关模式 认识工厂类相关模式 1 工厂类相关模式含义 工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是...

Lateautumn4lin
2019/10/16
0
0
使用python解释设计模式[译]

使用python解释设计模式 原文地址 有没有好奇过设计模式是什么呢?在这篇文章中,我们将了解为什么设计模式是重要的,同时也会给出一些python的例子,解释为什么以及在什么时候使用设计模式。...

Jefffrey
2019/09/29
0
0
《 Head First 》学习笔记:策略模式 (python实现)

学习<head first>,书中是用java 来实现,我用python比较多,所以在这里记下 用python实现的方法 。 书中策略模式的定义 : 策略模式 : 策略模式定义了算法族,分别封装起来,让它们之间可以...

Jbryan
2013/06/13
945
0

没有更多内容

加载失败,请刷新页面

加载更多

如何添加或更新查询字符串参数?

使用javascript,如何将查询字符串参数添加到url(如果不存在)或如果存在,则更新当前值? 我正在使用jquery进行客户端开发。 #1楼 我已经扩展了该解决方案,并将其与我发现的另一个解决方案...

技术盛宴
22分钟前
49
0
恭喜你,Get到一份 正则表达式 食用指南

先赞后看,养成习惯 前言 正则表达式 正则表达式: 定义一个搜索模式的字符串。 正则表达式可以用于搜索、编辑和操作文本。 正则对文本的分析或修改过程为:首先正则表达式应用的是文本字符串...

鹿老师的Java笔记
23分钟前
40
0
《 Python编程快速上手:让繁琐工作自动化》分享下载

书籍信息 书名:《 Python编程快速上手:让繁琐工作自动化》 原作名:Automate the Boring Stuff with Python: Practical Programming for Total Beginners 作者: Albert Sweigart 豆瓣评分...

开始以后_
26分钟前
63
0
Java--代码执行顺序(静态初始化块,初始化块,构造函数)

先上结论 执行顺序:先执行静态初始化块,然后时初始化块,最后是构造函数 书写格式: 注意事项: 1. 静态初始化块   静态初始化块只在类首次加载时执行一次,同时静态初始化块只能给静态变...

fairy1674
29分钟前
39
0
第八课:《Linux就该这么学》课堂笔记

“工作马马虎虎,只想在兴趣和游戏中寻觅快活,充其量只能获得一时的快感,绝不能尝到从心底涌出的惊喜和快乐,但来自工作的喜悦并不像糖果那样—放进嘴里就甜味十足,而是需要从苦劳与艰辛中...

宣城热点科技
30分钟前
73
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部