You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.10中如何让子类重写run时自动执行计时启停逻辑

可行,这是实现方案

完全可以做到不用子类手动调用计时启停逻辑,核心思路是把父类的run()从抽象方法改成具体实现,同时定义一个新的抽象方法让子类实现业务逻辑,父类的run()负责包裹计时逻辑并调用子类的业务方法。

具体实现步骤:

  1. 父类中把原来的抽象run()重命名为_run()(或其他自定义名称),保留抽象方法定义,让子类必须实现该方法编写业务逻辑。
  2. 父类新增具体的run()方法,在其中完成timer.start()、调用子类_run()、timer.stop()的完整逻辑。

代码示例:

from abc import ABC, abstractmethod

class Parent(ABC):
    def __init__(self, timer):
        self.t = timer

    # 子类需实现的业务逻辑抽象方法
    @abstractmethod
    def _run(self):
        pass

    # 父类提供的带计时包裹的入口方法
    def run(self):
        self.t.start()
        try:
            # 调用子类的业务逻辑
            self._run()
        finally:
            # 确保异常场景下也能停止计时
            self.t.stop()

# 子类实现示例
class Child1(Parent):
    def _run(self):
        # 仅编写Child1的业务逻辑,无需关心计时
        print("Child1执行业务逻辑")

class Child2(Parent):
    def _run(self):
        # Child2的业务逻辑
        print("Child2执行业务逻辑")

使用方式:

# 示例Timer类(可替换为实际计时实现)
class Timer:
    def start(self):
        print("计时开始")
    def stop(self):
        print("计时结束")

t = Timer()
child1 = Child1(t)
child1.run()  # 自动执行:计时开始→业务逻辑→计时结束

方案优势:

  • 子类只需专注实现_run()的业务逻辑,完全无需手动调用计时启停或父类方法。
  • 父类run()作为统一入口,所有子类继承后自动获得计时能力,无需额外代码侵入。

内容的提问来源于stack exchange,提问作者Mew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:51:02