你可以在定义一个类的时候为其添加__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的东东都可以。