python的抽象类和抽象方法

抽象类是一种不能直接被继承的类。举个例子,我们可以从类Creature衍生出类PeopleCats,其中前者两条腿走路,后者四条腿走路,而单独的类Creature却没有一个几条腿走路的方法,因为这是不确定的。

(关于装饰器,可查看https://blog.csdn.net/qq_45812220/article/details/137809943

我们直接上代码:

dart 复制代码
import abc

class A(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def mine(self):

class B(A):
    def mine(self):
        print("123")

b = B()

定义抽象类需要使用abc库,这里我们装饰了实例方法mine,实际上也可以装饰其他东西,读者可自己完成。

执行无输出,程序结束。我们成功定义了一个含有抽象方法mine的抽象类A,并由B继承它,完成了B的实例化

但如果我们执行下面的代码:

dart 复制代码
import abc

class A(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def mine(self):
        pass

class B(A):
    pass

b = B()

程序会报错:

dart 复制代码
TypeError: Can't instantiate abstract class B with abstract method mine

也就是说,由于B继承自抽象类AB必须实现A中的所有抽象方法,我们才能顺利将B实例化。

相关推荐
点云-激光雷达-Slam-三维牙齿8 小时前
速度起飞 笔记本电脑6G显卡llama运行Qwen3.6 35BA3B MTP 大模型
人工智能·python·电脑·llama
言乐69 小时前
Python游戏水平测试辅助系统
开发语言·python·游戏·django·pygame
从零开始学习人工智能15 小时前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题
python
WWJA王文举16 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言
卷无止境16 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
zhanghaha131417 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
Python私教17 小时前
API 输出模型怎么设计:从 model_dump() 到显式展示层
python·fastapi
Python私教17 小时前
本地 AI 工具服务该绑定 127.0.0.1 还是 0.0.0.0?
python·fastapi
卷无止境18 小时前
FastAPI 的Admin面板生态
后端·python
qq_4480111618 小时前
C语言中的动态内存分配
c语言·开发语言·php