亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

精通 Python 继承:概念、语法与实战示例

Python 继承

继承让你创建新类继承父类所有功能并添加或扩展特性。本教程通过清晰示例和最佳实践指导解释 Python 继承用法。

视频:Python 继承

Python 中的继承

继承是面向对象编程的核心原则,促进代码复用和逻辑层级。新类(派生或子类)以最小或无更改定义在现有类(基或父类)之上。子类自动获得父类属性和方法,可按需覆盖或扩展。


Python 继承语法

class BaseClass:
    # 基类体
class DerivedClass(BaseClass):
    # 派生类体

上例中 DerivedClass 继承 BaseClass 所有公共成员。通过添加新方法或覆盖现有方法,派生类可在复用基础实现的同时定制行为。


Python 继承示例

用实际例子说明继承。假设有通用 Polygon 类存储边数和边长:

class Polygon:
    def __init__(self, no_of_sides):
        self.n = no_of_sides
        self.sides = [0 for _ in range(no_of_sides)]
    def input_sides(self):
        self.sides = [float(input(f"Enter side {i+1} : ")) for i in range(self.n)]
    def display_sides(self):
        for i, side in enumerate(self.sides, 1):
            print(f"Side {i} is {side}")

Polygon 类封装任意多边形的通用属性和方法。Triangle 是恰好三边的特定多边形,可继承 Polygon 而无需重定义共享逻辑:

class Triangle(Polygon):
    def __init__(self):
        super().__init__(3)  # 用 3 初始化基类
    def find_area(self):
        a, b, c = self.sides
        s = (a + b + c) / 2
        area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
        print(f"The area of the triangle is {area:.2f}")

运行以下代码演示继承:

>>> t = Triangle()
>>> t.input_sides()
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4
>>> t.display_sides()
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0
>>> t.find_area()
The area of the triangle is 6.00

注意 Triangle 能调用 input_sides() 和 display_sides() 尽管从未定义它们——继承自动提供这些方法。

若子类未找到属性或方法,Python 会搜索父类,必要时继续沿继承链向上查找。


Python 方法重写

Polygon 和 Triangle 都定义了 __init__ 方法。子类实现覆盖父类,但可(且应)通过显式调用扩展基础逻辑。用 super() 是现代首选方式:

class Triangle(Polygon):
    def __init__(self):
        super().__init__(3)  # 调用 Polygon.__init__

重写时,子类方法可添加新行为或修改基础行为同时保留原功能。

Python 提供 isinstance() 和 issubclass() 内省继承关系:

t = Triangle()
print(isinstance(t, Triangle))  # True
print(isinstance(t, Polygon))   # True
print(isinstance(t, int))       # False
print(isinstance(t, object))    # True
print(issubclass(Polygon, Triangle))  # False
print(issubclass(Triangle, Polygon))  # True
print(issubclass(bool, int))        # True

这些工具对类型检查和确保对象符合预期接口至关重要。

更多 super() 信息见 Python super() 函数 文档。

Python

  1. 掌握 C# 继承:概念、类型与实战代码完全指南
  2. C# 继承完全指南:基类、派生类、初始化与多重继承替代方案
  3. 精通Python数据类型:实战指南
  4. 精通Python运算符:全面指南
  5. 精通Python Pass语句:实战指南
  6. 精通 Python 字典:创建、操作与进阶技巧
  7. 精通 Python 自定义异常:实战指南
  8. 精通 Python 面向对象编程:类、继承、封装与多态
  9. 精通 Python 运算符重载:实战指南
  10. 精通 Python @property 装饰器:简洁、向后兼容的 Getter 与 Setter
  11. 理解 Python type() 与 isinstance():实战示例详解
  12. Python 面向对象编程完全指南:从基础到进阶