python实现单例模式

Posted zhaogang0104

tags:

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

class SingletonType(type):

def __init__(self,*args,**kwargs):

    super(SingletonType,self).__init__(*args,**kwargs)



def __call__(cls, *args, **kwargs): # 这里的cls,即Foo类

    print('cls',cls)

    obj = cls.__new__(cls,*args, **kwargs)

    cls.__init__(obj,*args, **kwargs) # Foo.__init__(obj)

    return obj

class Foo(metaclass=SingletonType): # 指定创建Foo的type为SingletonType

def __init__(self,name):

    self.name = name

def __new__(cls, *args, **kwargs):

    return object.__new__(cls)

obj = Foo(‘xx‘)

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

Python如何实现单例模式

常见设计模式 (python代码实现)

深刻理解Python中的元类(metaclass)以及元类实现单例模式

Java单例模式

Python实现单例模式

一日一技:Python 下面最简单的单例模式写法