Python 继承
继承是面向对象编程方法中最重要的特性之一。它通常在使用诸如Java、PHP、Python等许多语言进行软件开发过程中使用。
您可以通过在新类名称后的括号中列出父类来创建一个类,而不是从头开始。
如果您需要设计一个新类,其中大部分属性在现有类中已经很好地定义了,那么为什么要重新定义它们呢?继承允许重复使用现有类的能力,并在需要时扩展以设计新的类。
当一个新类与现有类具有“IS A”关系时,继承就发挥作用。汽车是一种车辆,公交车也是一种车辆;自行车也是一种车辆。这里的父类是车辆,而汽车、公交车和自行车是子类。
语法
派生类的声明方式与其父类类似;但是,在类名后面要给出要继承的基类列表 –
示例
输出
当您执行此代码时,它将产生以下输出−
Python – 多重继承
在Python中,多重继承允许你基于多个父类构建一个类。因此,子类继承了所有父类的属性和方法。子类可以重写来自任何父类的方法。
语法
Python的标准库中有一个内置的divmod()函数,它返回一个包含两个元素的元组。第一个元素是两个参数的商,第二个元素是两个操作数的模值。
示例
这个示例试图模拟divmod()函数。我们定义了两个类division和modulus,然后有一个继承它们的div_mod类。
子类有一个新的方法div_and_mod(),该方法内部调用其继承类的divide()和mod_divide()方法来返回除法和求余值。
输出
方法解析顺序(MRO)
术语“方法解析顺序”与Python中的多重继承有关。在Python中,继承可能分布在多个层级上。假设A是B的父类,B是C的父类。类C可以重写继承的方法,或者其对象可以按照其父类中定义的方式调用它。那么,Python如何找到适当的方法进行调用。
每个Python类都有一个mro()方法,该方法返回Python解析要调用的方法的层次顺序。解析顺序是从继承顺序的底部到顶部。
在我们以前的例子中,div_mod类继承了division和modulus类。因此,mro方法返回的顺序如下 –