元类本质上也是一个类, 元类是用于实例化其他类,通过type()函数或者__class__查看类的元类或者对象的元类 默认情况下 所有的类都是通过type这个元类示例化的
class Mymetaclass(type): instance=None def __call__(cls, *args, **kwargs): # __call__ 该函数只有当MyMetaclass产生的对象User的对象在被调用的时候才被调用 if not Mymetaclass.instance: # 创建空对象 Mymetaclass.instance=object.__new__(cls) # 初始化空对象 Mymetaclass.instance.__init__(*args,**kwargs) #返回对象 return Mymetaclass.instance class User(metaclass=Mymetaclass): def __init__(self, name, age): self.name = name self.age = age u1 = User("张三", 20) print(u1) u2 = User("张三", 20) print(u2)