元类是什么?
元类实际上就是用来建立类的东西。
为了协助我们明白,我们能够如许想,我们建立类就是为了建立类的实例,一样的,我们建立元类就是为了建立类。
元类就是类(实例)的类,就像下面如许
Metaclass() = class class() = object # object==>实例
明白了什么是元类,我们再来看一看type()函数。
实在type就是一个元类,type就是我们用来建立一切的类的元类。(假如我们要建立本身定义的元类的话,也要从type中继续)
元类的事情道理:
我们来看一下下面这个例子
class ReedSunMetaclass(type): pass class Foo(object, metaclass = ReedSunMetaclass): pass class Bar(Foo): pass
起首,我们建立了一个元类ReedSunMetaclass
(注重!根据默许习气,元类的类名总是以Metaclass末端,以便清楚地示意这是一个元类)。
然后,我们又用元类ReedSunMetaclass建立了一个Foo类。
(同时,Foo类的属性__metaclass__就变成了ReedSunMetaclass)。
末了,我们建立了一个子类Bar继续自Foo。
我们来试着明白一下在python内部是怎样实行这几个步骤的:
关于父类Foo,Python会在类的定义中寻觅__metaclass__属性,假如找到了,Python就会用它来建立类Foo,假如没有找到,就会用内建的type来建立这个类。很明显,它找到了。
关于子类Bar, python会先在子类中寻觅__metaclass__属性,假如找到了,Python就会用它来建立类Bar,假如没有找到,就再从父类中寻觅,直到type。明显,它在父类中找到了。
我们能够看到运用元类的一个好处了,即他能够让子类隐式的继续一些东西。
以上就是Python中的元类(metaclass)是什么的细致内容,更多请关注ki4网别的相干文章!