__new__

python当中__metaclass__探讨

醉酒当歌 提交于 2019-12-23 16:17:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最初博主是希望在python当中创建一个单列模式的类,因为python当中不像java和php当中有权限修饰符(private),所以实现起来要绕一点。 网上找了一下python实现单列模式,类似的大概有这种方法: class singleton(type): """ 实现单列模式的元类 总之,metaclass的主要任务是: 拦截类, 修改类, 返回类 """ def __init__(cls,classname,parrentstuple,attrdict): """ """ super(SigleInstance,cls).__init__(classname,parrentstuple,attrdict) cls._instance = None def __call__(self,*args,**kargs): """ """ if self._instance: return self._instance else: self._instance = super(SigleInstance,self).__call__(*args,**kargs) return self._instance 这就是单列的元类,我把它小写了,因为type也是小写的。然后呢,在即将要实现单列的class当中这样写: