Python3之元类

元类是类的类,它可以控制类的行为,也可以控制对象的初始化过程

type(元类)—>类—>对象

Python3之元类

这个栗子可以让我们清晰的认识到类的实例化过程。
纠正错误:自定义元类中的__init__方法,缺少2个参数,正确的形式为:def __init__(self,cls_name,bases,cls_dict),为什么呢,type类实例时需要4个参数:

Python3之元类

当我们创建类Foo并制定元类为自定义Mymeta时,就会调用__init__方法,传入4个参数,这个过程缺少参数就会报缺少位置参数错误。调用__init__时,程序会自动对类进行实例化,不需要调用:
type.__init__(self, cls_name, bases, cls_dict)