用于单例模式的__new__的python元类不起作用

时间:2017-09-20 10:11:10

标签: python python-2.7 python-3.x

我正在尝试使用元类创建单例模式。当我在元类中使用__new__方法时,在子类中创建对象并返回新创建的对象时不会调用它,但是当我在元类中使用__call__方法时,它可以正常工作。我正在使用python 3。 这是我的代码:

class meta_class(type):
    _instance = {}
def __new__(cls, *args, **kwargs):
    if cls not in cls._instance:
        inst = cls._instance[cls] = super(meta_class,cls).__new__(cls,*args,**kwargs)
        return inst
    else:
        return cls._instance[cls]

class example(metaclass=meta_class):
    def __init__(self):
        print("instance init")

o = example()
print(o)
p = example()
print(p)

任何帮助都会更加明显。

0 个答案:

没有答案