1、元类之前

类也是对象(Python中一切皆为对象)

在Python中的类和绝大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。这点在Python中仍然成立

但是在Python中的类同样也是对象,只要使用关键字class,Python解释器在执行的时候就会创建一个对象ObjectCreator(object),在内存中创建一个对象,就是ObjectCreator,这个对象自身拥有创建对象的能力,这就是它是一个类的原因。本质上还是一个对象,可以对它赋值给一个变量,拷贝,增加属性,作为函数参数进行传递

动态创建类:

方法一:

方法二:

用type()函数创建

上面创建类的方法等价于下面的代码

2、元类

元类就是用来创建类对象的类

由上面的动态创建类可以看出,使用type可以创建一个类,所以type就是创建所有类的元类,通过__class__属性可以查看当前对象的类是什么,如下代码可以验证:

以上代码可以看出age的类是int,name的类是str等等,但是age,name,函数,类的类的类都是type,所以type就是元类

元类就是创建类的类

3、__metaclass__属性:

在创建类对象的时候,如果不指定__metaclass__属性的话,使用type元类进行创建,如果指定就是用指定的类进行创建

4、创建自定义的元类

不要轻易使用元类