MetaClass元类,本质也是一个类,但和普通类的用法不同,它可以对类内部的定义(包括类属性和类方法)进行动态的修改。可以这么说,使用元类的主要目的就是为了实现在创建类时,能够动态地改变类中定义的属性或者方法。
如果在创建类时,想用 MetaClass 元类动态地修改内部的属性或者方法,则类的创建过程将变得复杂:先创建 MetaClass 元类,然后用元类去创建类,最后使用该类的实例化对象实现功能。
如果想把一个类设计成 MetaClass 元类,其必须符合以下条件:
1、 必须显式继承自 type 类;
2、类中需要定义并实现 __new__()
方法,该方法一定要返回该类的一个实例对象,因为在使用元类创建类时,该 __new__()
方法会自动被执行,用来修改新建的类。