面向对象的三个基本特征:
- 封装
- 继承
- 多态
封装
将客观事物用属性和方法表示成类。客观事物对应现实生活中的各种事物,属性和方法为计算机中对应事物的表示形式和动作。
- 属性包括类属性和实例属性。其中类属性为该模版对象共有的属性参数,如计算圆面积时的pi,实例属性对应个体的具体参数,如半径。
- 方法包括实例方法、类方法和静态方法。类方法和静态方法为该类相关的功能函数,如数据有效性的判定,数据的预处理等。类的方法本质上是函数,只是增加了self或者cls参数。其中实例方法为实例化对象直接调用的方法,体现在该方法的第一个参数形式为self(实例对象本身),类方法和静态方法是通过模版对象调用的方法,其中类方法为使用@classmethod装饰器修饰的方法,该方法的第一个参数不是self,而是cls(模版对象);静态方法使用@staticmethod装饰器修饰的方法,该方法的参数中没有self和cls,参数同函数参数个数。
继承
用于表示子类和父类之间的关系,是一种包含与被包含的关系。根据相关位置关系可以分为:单一继承、多重继承、多级继承。
- 单一继承(单继承),指子类仅有一个父类的情况,如猫是动物的子类。此时父类的初始化可以通过super().__init__
- 多重继承(多继承),指子类具有多个父类的情况,如大学生继承于青年人和学生,田园犬继承于犬类和食肉动物类等。
- 多级继承,指子类的父类也是继承来的,如人——>学生——>大学生,汽车——>货车——>重型货车。
多态
针对1个接口通过不同的方式进行实现。与类的继承密不可分,如动物类中的call方法内容为空,子类猫和狗分别实现call方法,就是一种多态。