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

为何Python允许在抽象基类中实现本应由派生类重写的抽象方法?

Python抽象基类中抽象方法允许编写实现的原因

Python里给抽象基类(ABC)的抽象方法写实现,本质是在「强制派生类必须自定义方法」的前提下,给子类提供可复用的基础逻辑,主要有这几个实际用处:

  • 减少重复代码:如果多个子类都需要执行一段相同的基础操作,把这段逻辑写在基类的抽象方法里,子类重写时只需要调用super()复用这段逻辑,再补充自己的扩展代码就行,不用每个子类都从头写一遍。
  • 兼顾强制约束与灵活性:抽象方法的核心作用是强制所有子类必须实现这个方法(不然子类没法实例化),但这并不意味着基类不能提供基础逻辑。子类必须重写,但重写时可以选择借力基类的实现,而非完全从零开始。
  • 统一接口下的分层逻辑:基类可以把通用逻辑封装在抽象方法实现中,子类专注于实现各自的差异化逻辑,既保证了所有子类都遵循统一的接口规范,又能复用通用代码。

对应的示例代码如下:

from abc import ABC, abstractmethod


class AbstractClassExample(ABC):
    
    @abstractmethod
    def do_something(self):
        print("Some implementation!")
        
class AnotherSubclass(AbstractClassExample):

    def do_something(self):
        super().do_something()
        print("The enrichment from AnotherSubclass")
        
x = AnotherSubclass()
x.do_something()

这段代码里,基类的do_something加了@abstractmethod,所以子类AnotherSubclass必须重写这个方法才能实例化。子类重写后,通过super().do_something()调用了基类的实现,再加上自己的打印逻辑,既满足了抽象类的强制要求,又复用了基类的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:45:41