class A(type):
def __call__(cls, *args, **kwargs):
if getattr(cls, '_obj', None):
return getattr(cls, '_obj')
else:
obj = object.__new__(cls)
obj.__init__(*args, **kwargs)
setattr(cls, '_obj', obj)
return obj
class B(metaclass=A):
pass
b1 = B()
b2 = B()
print(id(b1))
print(id(b2))
通过元类创建单例模式
于 2024-07-30 11:26:56 首次发布