Python 单例

简介: Python 单例

装饰器单例

def singleton(cls):
    instances = []# 为什么这里不直接为None,因为内部函数没法访问外部函数的非容器变量
    def getinstance(*args, **kwargs):
        if not instances:
            instances.append(cls(*args, **kwargs))
        return instances[0]
    return getinstance
@singleton
class Foo:
    a = 1
f1 = Foo()
f2 = Foo()
print id(f1), id(f2)

重写__new__


利用“类变量对所有对象唯一”,即cls._instance

class Singleton(object):
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = object.__new__(cls, *args, **kwargs)
        return cls._instance
class Foo(Singleton):
    pass
相关文章
|
1天前
|
设计模式 Java Python
python内置方法和属性应用:反射和单例
python除了丰富的第三方库外,本身也提供了一些内在的方法和底层的一些属性,大家比较常用的如dict、list、set、min、max、range、sorted等。笔者最近在做项目框架时涉及到一些不是很常用的方法和属性,在本文中和大家做下分享【2月更文挑战第2天】
39 0
|
9月前
|
设计模式 存储 Python
【从零学习python 】46. Python中的__new__和__init__方法解析及单例设计模式
【从零学习python 】46. Python中的__new__和__init__方法解析及单例设计模式
42 0
|
1天前
|
Python
python单例
python单例
17 0
|
5月前
|
安全 Python
python 线程安全的 单例 实现 日志分级
python 线程安全的 单例 实现 日志分级
51 0
|
11月前
|
设计模式 Python
Python基础 如何实现单例类
Python基础 如何实现单例类
46 0
|
Python
Python:多进程下实现单例
Python:多进程下实现单例
327 0
|
设计模式 Python
Python编程:设计模式之单例和简单工厂
Python编程:设计模式之单例和简单工厂
|
设计模式 Python
21_python基础—单例和 __ new __ 方法
21_python基础—单例和 __ new __ 方法
59 0
21_python基础—单例和 __ new __ 方法
|
Python
Python:多进程下实现单例
Python:多进程下实现单例
622 0
cxa
|
Python
python设计模式之单例模式(二)
上次我们简单了解了一下什么是单例模式,今天我们继续探究。 上次的内容点这 上次们讨论的是GoF的单例设计模式,该模式是指:一个类有且只有一个对象。通常我们需要的是让实例共享一个相同的装态 比如数据库连接。
cxa
3766 0