继承是面向对象编程(OOP)中的一个核心概念,它允许一个类(称为子类或派生类)从另一个类(称为父类或基类)那里继承属性和方法。在本文中,让我们深入探讨 Python 中的继承机制。
示例: 在这里,我们创建了一个名为 INLINECODE7031081a 的父类,其中包含一个 INLINECODEf89794b0 方法。然后,我们创建了一个继承自 INLINECODE560fffc7 的子类 INLINECODEca36533b,并为其添加了属于自己的行为。
Python
CODEBLOCK_808bbd0b
Output
Animal name: Buddy
Buddy barks
解释:
- class Animal: 定义了父类。
- info(): 打印动物的名字。
- class Dog(Animal): 将 INLINECODE175e06c8 定义为 INLINECODE8bce092d 类的子类。
- d.info(): 调用父类方法
info()以及 d.sound(): 调用子类方法。
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20251009164207176209/animalclass.webp">animalclassPython 中的继承
为什么我们需要继承
- 通过在类之间共享属性和方法来促进代码复用。
- 建立现实世界的层级关系模型,例如 Animal -> Dog(动物 -> 狗)或 Person -> Employee(人 -> 员工)。
- 通过在父类中进行集中更新来简化维护工作。
- 支持方法重写,以便定制子类的行为。
- 利用多态性支持可扩展、可伸缩的设计。
super() 函数
super() 函数用于调用父类的方法。特别地,它通常用于子类的 __init__() 方法中,以初始化继承的属性。通过这种方式,子类可以利用父类的功能。
示例: 在这里,INLINECODE35d76a32 类使用 INLINECODE70c2bf9c 来调用 Animal 的构造函数。
Python
CODEBLOCK_af1c5d3a
Output
Animal name: Buddy
Buddy is a Golden Retriever
解释:
- INLINECODE6e4a921a 函数在 INLINECODE1c7499dd 的 INLINECODE7dfc5d2c 方法内部被调用,用于执行 INLINECODEeb2228c5 的构造函数并初始化继承属性(name)。
- 这确保了父类的功能被复用,而无需在子类中重写代码。
Python 继承的类型
根据涉及父类和子类的数量不同,继承可以以不同的方式使用。这有助于更有效地建立现实世界关系的模型,并增加代码复用的灵活性。
Python 支持多种类型的继承,让我们逐一进行探索:
1. 单继承
在单继承中,一个子类仅从一个父类继承。
示例: 本示例展示了子类 INLINECODEcf7e09ac 从父类 INLINECODEede6734d 继承了一个属性。
Python
CODEBLOCK_55c8d809
Output
Name: Sarah
Sarah is an employee
解释: 这里 INLINECODE835f721f 从 INLINECODE990c1ea2 继承了 INLINECODEa55702d5,它还定义了自己的方法 INLINECODE4d629b4d。
2. 多重继承
在多重继承中,一个子类可以同时继承多个父类。
示例: 本示例演示了 INLINECODE4b3d3ddc 从两个父类 INLINECODE608553fd 和 Job 继承属性。
Python
CODEBLOCK_a6ff3344
Output
Jennifer earns 50000
解释: 这里 INLINECODEc02a69ec 获取了来自 INLINECODE07d1c3b6 和 INLINECODEaa03dea4 两者的属性,它可以同时访问 INLINECODE2c664ffa 和 salary。
3. 多级继承
在多级继承中,一个类派生自另一个派生类(就像一个链条一样)。
示例: 本示例展示了 INLINECODE3d1d9615 继承自 INLINECODEa5efef14,而 INLINECODEdaa60760 又继承自 INLINECODEe0973997。
Python
“
class Person:
def init(self, name):
self.name = name