Python是一门面向对象的编程语言,面向对象编程(Object OrientedProgramming,OOP)是一种编程思想,它把对象作为程序的基本单元,一个对象可以包裹相应的数据以及操作这些数据的函数。一切皆对象,所有的数据类型都可以视为对象
类的基础
使用类(class)的形式自定义对象。使用class关键字来创建一个新的类,class关键字之后紧随着类的名称与该类继承的类(称为父类),最后以冒号结尾。示例代码如下:
创建了名为People的类,People类继承object基类,在Python3.x版本中,所有类都会默认继承object基类.在类中定义的变量通常称为类变量;在类中定义的方法称为类方法,其中第一个参数通常为self,self表示类的实例对象本身。类中的变量以及方法都可以统称为类的属性。
使用类中的代码,首先需要实例化类,然后通过实例对象使用其中的属性.实例化了两个People类的实例变量p1与p2,通过“.”操作符使用类中的属性,非常简单。
如果我们希望在实例化类时传入自定义参数,此时就需要重写__init__方法.
继承与多态
类对象是可以被继承的,通过继承子类可以获取父类的所有属性与功能。
通过继承,Student类不用编写任何代码,就拥有了与People类相同的属性与功能。
子类除可以获取父类的所有属性与功能外,还可以新增自己的功能或修改父类的功能,示例代码如下:
Student类继承了People类,并且重写了People类中的__init__方法与talk方法,通过重写的方式,让两个方法更加符合Student类。
子类中重写的方法会将父类方法中的逻辑完全覆盖。可以基于父类方法中的代码添加新的逻辑,从而不需要全部清空重写。
通过super方法可以调用父类中对应的方法,从而执行父类方法中的逻辑;而子类方法中的新逻辑只需在super方法后添加相应的代码。
通过类继承并修改父类方法获得继承的另一个好处是:多态
利用继承机制,可以创建继承于同一个类的多种不同的子类。
Student类与Teacher类在实例化后的对象依旧是People类,这其实就是多态,子类依旧属于父类,不同的子类造就了多态。