python中对单例模式的理解

class Foo(object):
    instance = None

    def __init__(self):
        pass
    def process(self):
        return ‘1234565‘

    @classmethod   #版本1单例模式
    def get_instance(cls):
        if  Foo.instance:
            return Foo.instance
        else:
            Foo.instance = Foo()
            return Foo.instance

obj1 = Foo()
print(obj1.process())

obj2 = Foo()
print(obj2.process())
obj1不相等obj2  id(obj1)

obj1 = Foo.get_instance()
obj2 = Foo.get_instance()
此时的obj1=obj2

class Foo(object):
    instance = None

    def __init__(self):
        self.name = ‘alex‘

    def __new__(cls, *args, **kwargs):
        if Foo.instance:
            return Foo.instance
        else:
            obj = object.__new__(cls, *args, **kwargs) #创建对象的本质是new  new先执行
            return return obj

obj1 = Foo()
obj2 = Foo()
print(id(obj1), id(obj2))  obj1=obj2  单例模式2 高级版  永远用一个对象的实例!

创建的对象内部封装的值是一样的 就搞成单例模式

原文地址:https://www.cnblogs.com/Liang-jc/p/9286287.html

时间: 2024-11-09 00:36:17

python中对单例模式的理解的相关文章

python中 __name__ == '__main__'的理解

python中常常会用到: if __name__ == '__main__': 这段代码的意思为: 当我们直接运行该段代码所在的py文件时(python xxx.py),  __name__ == '__main__' 为真,if条件成立,那么就会执行if下面的语句. 当我们在另一个py文件中使用import导入包含该段代码的py文件时,__name__的值是包含该段代码的py文件的名字,而不是__main__. python中 __name__ == '__main__'的理解

python中的单例模式

原文:https://segmentfault.com/a/1190000008141049 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig

python中sorted函数的理解(对list列表排序,对dict字典排序)

在python手册中: sorted(iterable[,cmp,[,key[,reverse=True]]]) 作用:Return a new sorted list from the items in iterable. 第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表(list). 可选的参数有三个,cmp.key和reverse. 1)cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个

Python中的单例模式的几种实现方式的优缺点及优化

单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪

Python中的单例模式——装饰器实现剖析

Python中单例模式的实现方法有多种,但在这些方法中属装饰器版本用的广,因为装饰器是基于面向切面编程思想来实现的,具有很高的解耦性和灵活性. 单例模式定义:具有该模式的类只能生成一个实例对象. 先将代码写上 #创建实现单例模式的装饰器 1 def singleton (cls, *args, **kwargs): 2 instances = {} 3 def get_instance (*args, **kwargs): 4 if cls not in instances: 5 instanc

Python中的单例模式的几种实现方式的及优化

阅读目录(Content) 单例模式 实现单例模式的几种方式 1.使用模块 2.使用装饰器 3.使用类 4.基于__new__方法实现(推荐使用,方便) 5.基于metaclass方式实现 相关知识 实现单例模式 回到顶部(go to top) 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户

Python 中的单例模式

1.什么是单例模式   单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场.单例模式能控制一个类只能产生一个对象. 2.为什么需要单例模式 当每个实例都会占用资源,而且实例初始化会影响性能,这个时候就可以考虑使用单例模式,它给我们带来的好处是只有一个实例占用资源,并且只需初始化一次: 当有同步需要的时候,可以通过一个实例来进行同步控制,比如对某个共享文件(如日

Python中“if __name__==’__main__:”理解与总结

1 引言 2 程序入口 3 模块导入 4 "__name__"与"__main__" 5 总结 1 引言 在Python当中,如果代码写得规范一些,通常会写上一句"if __name__=='__main__:"作为程序的入口,但似乎没有这么一句代码,程序也能正常运行.这句代码多于吗?原理又在哪里?本篇博文对此进行总结说明. 2 程序入口 学过Java.C.C++的程序员应该都知道,每次开启一个程序,都必须写一个主函数作为程序的入口,也就是我们常

python中实现单例模式

单例模式的目的是一个类有且只有一个实例对象存在,比如在复用类的过程中,可能重复创建多个实例,导致严重浪费内存,此时就适合使用单例模式. 前段时间需要用到单例模式,就称着机会在网上找了找,有包含了__new__方法在内的5种单例模式,就顺便记录于此. 基于模块导入机制的实现 第一次执行程序时编译为.pyc文件,而第二次执行时会直接执行.pyc.基于此机制,可以通过把类和所创建的实例单独写在某模块内,在使用时直接从这么模块中导入即可,这个导入的实例对象即唯一对象. # test.py文件 class