接上文Python开发从零开始-20.3-基础语法(面向对象),本文将继续介绍 Python 面向对象编程的相关知识。
(六)继承
继承(Inheritance)一种非常重要的面向对象编程特性,它允许基于已有的类创建新的类。新创建的类称为子类(或派生类),而原有类称为父类(基类或超类)。通过继承,子类可以复用父类的属性和方法,同时还可以添加新的属性和方法或者覆盖(重写)继承自父类的方法。继承的好处在于提升代码重用性和可扩展性,能够进行更好的代码组织。
Python 继承支持单继承和多继承,新建的子类可以有一个或多个父类。
1、单继承
单继承是指一个子类只能继承一个父类。
(1)基本语法
class 子类名(父类名): 语句块
|
(2)编程示例

(3)关于 super()
super() 是用于调用父类方法的一个内置函数,该函数创建了一个父类的代理对象。super() 函数适用于:
子类保留父类属性。需要注意的是,子类调用父类的属性前,必须先使用 super().__init__() 方法完成父类初始化;
多继承时确保调用正确的父类方法,避免潜在的冲突。并且使代码更灵活易维护。
可以直接使用 父类名.方法(self, 参数列表) 语法在子类中调用父类方法,但是这种语法不被推荐,小编不做介绍。
(4)Python 子类继承父类时是否会实例化父类?
继承 ≠ 实例化。子类继承父类时不会实例化父类,只有在创建子类实例时,才可能调用实例化父类。
若子类未定义 __init__() 方法,会自动调用父类 __init__() 方法;
若子类重写了 __init__() 方法但未用 super().__init__() 方法,则不会实例化父类。
(5)为什么使用单继承
虽然 Python 支持多重继承,但在大多数情况下,单继承因其简洁性、清晰性和安全性等而被推荐,其优势主要体现在以下几点:
清晰性和简单性:单继承使得类的层次结构更加清晰。每一个子类只与一个父类相关联,这有助于开发者更容易地理解和维护代码。
减少复杂性:多继承可能导致所谓的“菱形问题”(也称为“钻石问题”),即一个类继承了多个类,而这些类又有一个共同的基类。在这种情况下,如果不恰当地处理,可能会导致方法解析顺序(Method Resolution Order, MRO)变得复杂且难以预测。单继承避免了这种复杂性。
避免命名冲突:在多继承的情况下,不同的父类可能会提供同名的方法或属性。这可能导致命名冲突和难以追踪的错误。单继承通过减少潜在的命名冲突,使得代码更加健壮和易于调试。
受文章篇幅所限,下文将继续介绍 Python 面向对象编程的相关知识。