你可以在定义一个类的时候为其添加__metaclass__属性

(python2--->__metaclass__    python3--->metaclass)

class Foo(Bar):

pass

 

Python做了如下的操作:  

1. Foo中有__metaclass__这个属性吗?如果是,Python会通过__metaclass__创建一个名字为Foo的类(对象)

2. 如果Python没有找到__metaclass__,它会继续在Bar(父类)中寻找__metaclass__属性,并尝试做和前⾯同样的操作。

3. 如果Python在任何⽗类中都找不到__metaclass__,它就会在模块层次中去寻找__metaclass__,并尝试做同样的操作。

4. 如果还是找不到__metaclass__,Python就会用内置的type来创建这个类对象。

现在的问题就是,你可以在__metaclass__中放置些什么代码呢?答案就

是:可以创建一个类的东西。那么什么可以用来创建一个类呢?type,或者

任何使用到type或者子类化type的东东都可以。

python 元类之 meta_class属性 图要改

python 元类之 meta_class属性 图要改

相关文章: