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

Python面向对象编程:抽象类能否作为子类存在?

抽象类继承相关问题解答

抽象类是否可以作为子类存在?

完全可以。抽象类的核心判定标准是类中是否存在未实现的抽象方法,和它是否继承自其他类没有关系。只要它继承了某个父类,同时自身还有未实现的抽象方法,它就既是父类的子类,同时也是抽象类。

示例代码中B类的属性判定

你给出的示例代码如下:

from abc import ABC, abstractmethod

class A(ABC):
    
    def __init__(self, name):
        self.name = name
        
    @abstractmethod
    def something():
        pass
    
class B(A):
    pass

针对B类的两个疑问的答案如下:

  • B 是 A的子类:只要类定义时指定了继承关系,该关系就成立,你可以通过issubclass(B, A)进行验证,运行后会返回True。
  • B 是 抽象类:因为B继承了A中的抽象方法something,但没有对该方法进行重写实现,只要类中存在未实现的抽象方法,就属于抽象类,无法直接实例化。如果尝试执行B("测试")创建实例,Python会直接抛出TypeError异常。

你可以对B类做扩展验证,比如给B新增一个抽象方法,只要所有抽象方法没有被全部实现,后续继承B的子类只要没有重写全所有抽象方法,就依然是抽象类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:45:03