如果一个新类继承自一个设计好的类,就直接具备了已有类的特征。已有的类称为“父类或基类”,新的类称为“子类或派生类”。
语法格式
Python支持多重继承,一个类可以继承多个父类。继承的语法格式如下:
class 子类类名(父类1,父类2,...):
类体
如果类定义中没有指定父类,则默认父类是object类。也就是说,object类是所有类的父类。里面定义了一些所有类共有的默认实现。
关于构造函数
- 子类不重写__init__,实例化子类时,会自动调用父类定义的__init__
- 子类重写了__init__时,实例化子类,就不会调用父类已定义的__init__
- 如果重写了__init__时,要使用父类的构造方法,可以使用super关键字。也可以用父类名.__init__(self,参数列表)
类成员的继承和重写
- 成员继承:子类继承了父类除构造方法之外的所有成员。(私有属性、私有方法也被继承)
- 方法重写:子类可以重新定义父类中的方法,这样就会覆盖父类的方法。
查看类的继承层次结构
通过类的方法mro()或者类的属性__mro__可以输出这个类的继承层次结构
class A:pass
class B(A):pass
class C(B):pass
print(C.mro())
# [<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]