python实现单例模式

三世轮回 提交于 2019-12-05 17:55:46

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')

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!