Python中的类与对象-笔记
- 本文链接: https://zpzhou.com/archives/python_class_and_object.html
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
- python中类也是一个对象
- 定义在
init
外的属性是类属性,定义在init
内的是对象属性 - 修改类的属性,会影响所有该类的对象(包括已经实例化的)
metaclass
是创造类,而不是实例化类的对象metaclass
中操作的属性都是类的属性metaclass
中通过super().__new__
创建新类metaclass
中通过super().__new__
创建的类包含了父类的属性,可以通过getattr
获取metaclass
中直接修改通过getattr
获取的父类属性,会更新到父类中,影响所有父类的子类metaclass
中,如果父类在init
外定义了某个属性,这个属性可以通过getattr
获取,且被继承到子类,否则通过getattr
获取的结果为None
metaclass
中,通过setattr
设置类的属性,只作用在当前类,不会修改父类的属性