abc -> AbstractBaseClass -> 抽象基类
type(name, bases, dict) -> a new type
(先不纠结:先有type还是先有object(-_-)type(name=ClassName, bases=[object], dict=dict(xx=xx))
class Demo(metaclass=MetaClass) -> 指定一个metaclass在创建类型的时候就会用指定的metaclass去创建这个类型
class Demo(A,metaclass=B)
先定义继承类,然后定义metaclass,先定义metaclass会语法错误,创建和初始化类型之间,python会先读取类定义,然后根据类的定义及继承体系去创建并初始化类型,并且,在创建初始化类型的过程中是可以覆盖类定义/重载的方法的# 定义一个metaclass class MetaClass(type): # 定义一个metaclass必须继承于type pass # 使用一个metaclass class Demo(metaclass=MetaClass): # 调用MetaClass的__new__和__init__方法来创建一个类型对象 pass # 创建一个Demo实例 demo = Demo() # 调用object的__new__和__init__方法来创建一个对象