python 通过元类 实现单例模式

Posted 78 months ago python object metaclass 单例模式 工厂模式


class Singleton(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]


class oneObj(metaclass=Singleton):
    def __init__(self):
        pass

python 中 类 也是对象

由于类也是对象,python中的类只要使用class 关键字就可以动态的创建类


def creatClass():
    class classDemo():
        pass
    return classDemo

return 出来的就是一个类对象 而不是实例化后的

用type创建一个类


objs = type('objs', (), {'echo_bar': "asdsad"})
            对象名      集成的元祖      类属性

创建元类


class Singleton(type):
    def __new__(singleton, class_name, class_parents, class_attr):
        return super(Singleton, cls).__new__(cls,class_name, class_parents, class_attr)

点击评论