pytho 单例模式

Posted lanyinhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytho 单例模式相关的知识,希望对你有一定的参考价值。

单例模式存在的目的是保证当前内存中仅存在单个实例,避免内存浪费!!!

(程序如果并发量大的话,内存里就会存在非常多功能上一模一样的对象。存在这些对象肯定会消耗内存,对于这些功能相同的对象可以在内存中仅创建一个,需要时都去调用)

# 单例模式
 
class Foo:
 
    __n = None
 
    def __init__(self):
        self.name = "nick"
        self.age = 18
        self.job = "pythoner"
 
    @staticmethod
    def dl():
        if Foo.__n:
            return Foo.__n
        else:
            Foo.__n = Foo()
            return Foo.__n
 
 
# 创建对象时不能再直接使用:obj = Foo(),而应该调用特殊的方法:obj = Foo.dl() 。
 
f1 = Foo.dl()
print(f1)
f2 =Foo.dl()
print(f2)
f3 =Foo.dl()
print(f3)
 
# 运行结果
<__main__.Foo object at 0x0000000001142390>
<__main__.Foo object at 0x0000000001142390>
<__main__.Foo object at 0x0000000001142390>
def singleton(argv):
    dic = {}
 
    def s(*args, **kwargs):
 
        if argv not in dic:
            dic[argv] = argv(*args, **kwargs)
            return dic[argv]
        else:
            return dic[argv]
 
    return s
 
 
# 类上加单例装饰器
@singleton
class Foo:
    pass
 
@singleton
class Foo2:
    pass

 

以上是关于pytho 单例模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之单例模式

常用代码片段

常用代码片段

性能比较好的单例写法

片段作为 Android 中的单例

单例片段或保存网页视图状态