继承
继承具备这样一个能力:可以实现现有类中所有的能力,在不需要对原有的类进行重新修改的情况下进行功能的扩展。
概述
通过继承类创建的新类称之为“子类”或者“派生类”,被继承的类称之为“父类”,“基类”,“超类”。子类会继承父类中所有的属性与方法。如:Doctor类就是Person类的子类,Doctor继承了Person类的属性与方法。
子类方法的重写
如果在子类中有和父类重名的方法,通过子类的实例去调用方法时, 会调用子类的方法而不是父类的方法,这个特点称之为方法的重写(覆盖 override)。如:同时定义父类和子类中的use_tool方法,在实例对象调用方法时,优先去子类Doctor中查找,子类没有再去父类Person查找…依次往上推,直到object类中没有,报错。
super()函数
super() 函数是用于调用父类(超类)的一个方法。比如:
注意:super()调用父类方法时,没有传self参数!
多重继承
可以通过类名.bases 可以用来获取当前类的所有父类,在Python中是支持多重继承的,也就是我们可以为一个类同时指定多个父类。如:
多态
多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。比如:动物分为人类,猪类(在定义角度),是面向对象的三大特征之一。
属性与方法
为方便叙述对属性和方法进行分类:
属性:类属性,实例属性
方法:类方法,实例方法,静态方法
实例属性与类属性
类属性 直接在类中定义的属性就是类属性, 类属性可以通过类或类的实例访问到, 类属性只能通过类对象来修改,无法通过实例对象来修改;实例属性,通过实例对象添加的属性属于实例属性,实例属性只能通过实例属性来访问和修改,类对象无法访问和修改.。如:
实例方法与类方法
实例方法:在类中定义,以self为第一个参数都是实例方法, 实例方法在调用时,Python会将调用对象作为self传入, 通过类对象调用时,不会自动传self,必须手动传self;类方法:类方法的第一个参数是cls,也会被自动传递,cls就是当前的类对象,类方法可以通过类去调用,也可以通过实例调用。如:
静态方法
静态方法:静态方法,基本上是一个和当前类无关的方法,它只是一个保存到当前类中的函数,静态方法一般都是些工具方法,和当前类无关。如: