我正在尝试使用元类创建单例模式。当我在元类中使用__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)
任何帮助都会更加明显。