init
外的属性是类属性,定义在init
内的是对象属性metaclass
是创造类,而不是实例化类的对象metaclass
中操作的属性都是类的属性metaclass
中通过super().__new__
创建新类metaclass
中通过super().__new__
创建的类包含了父类的属性,可以通过getattr
获取metaclass
中直接修改通过getattr
获取的父类属性,会更新到父类中,影响所有父类的子类metaclass
中,如果父类在init
外定义了某个属性,这个属性可以通过getattr
获取,且被继承到子类,否则通过getattr
获取的结果为None
metaclass
中,通过setattr
设置类的属性,只作用在当前类,不会修改父类的属性