作者:再见紫罗兰
来源:http://www.cnblogs.com/linxiyue/p/8030604.html
在 Python中,实例对象是由类生成的,而类本身也是可以被传递和自省的对象。那么类对象是用什么创建和生成的呢?答案是元类,元类就是一种知道如何创建和管理类的对象。
让我们回顾一个内置函数type(),type不仅可以返回对象的类型,而且可以使用类名称、基类元组、类主体定义的字典作为参数来创建一个新类对象:
>>>Foo=type('Foo',(object,),{'foo':lambdaself:'foo'})
>>>Foo
>>>type(Foo)
实际上,新型类的默认元类就是type,类可以用metaclass类变量显示的指定元类,上述代码功能与下述相同:
classFoo():
__metaclass__=type
deffoo(self):
return'foo'
如果没有显式的指定元类,class语句会检查基类元组中的第一个基类的元类,比如新型类都是继承object类的,所以新型类与object类的元类相同,为type,继承object而不显式的指定元类:
classFoo(object):
deffoo(self):
return'foo'
如果没有指定基类,class语句会检查全局变量met