python 元类

  1. 元类(metaclass)是用来创建类的类,type是pyhon种内建的元类
  2. type(object):返回一个对象的类型,与object.__class__的值相同,type(name,bases,dict):创建一个新的type类型,name就是新class的name,值存到__name__属性中,bases是tuple类型,值会存到__bases__中,dict的值存到__dict__中
    type example
  3. 类默认是用type()创建的,通过定义类时指定metaclass参数或继承自某个类,而该类指定了metaclass参数,可以自定义类的创建过程
    metaclass example
  4. 确定一个类的metaclass的步骤:
    • 如果没有基类也没有显示指定metaclass,那么使用type()
    • 如果显示指定了metaclass,并且metaclass不是type()的实例,那么直接使用metaclass
    • 如果类的metaclass被显示指定为type()类型的实例,或者有继承的基类,那么使用最底层的派生类(the most derived metaclass),最底层的派生类是指定的metaclass中和所有基类的metaclass的一个子类型(subtype),如果没有metaclass满足条件,会抛出TypeError的异常
原文地址:https://www.cnblogs.com/phenixyu/p/4012116.html