元类

什么是元类

  • 在python中一切皆对象,那么我们用class关键字定义的类本身也是一个对象,负责产生该对象的类称之为元类,即元类可以简称为类的类

为什么用元类

元类是负责产生类的,所以我们学习元类或自定义类的目的:是为了控制类的产生过程,还可以控制对象的产生过程

class创建类

  • 如果说类也是对象,那么用class关键字的去创建类的过程也是一个实例化的过程,该实例化的目的是为了得到一个类,调用的是元类
  • 用class关键字创建一个类,用的默认的元类type,因此以前说不要用type作为类别判断
  • type实现

  • 自定义元类

分析用class自定义类的运行原理(而非元类的的运行原理):

  1. 拿到一个字符串格式的类名class_name='People'
  2. 拿到一个类的基类们class_bases=(obejct,)
  3. 执行类体代码,拿到一个类的名称空间class_dic={...}
  4. 调用People=type(class_name,class_bases,class_dic)
  5. 自定义元类控制类的产生过程,类的产生过程其实就是元类的调用过程

属性查找顺序

查找顺序:

  1. 先对象层:OldoyTeacher->Foo->Bar->object
  2. 然后元类层:Mymeta->type
原文地址:https://www.cnblogs.com/rnanprince/p/11630158.html