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实例化。

相关推荐
火红色祥云6 分钟前
Python机器学习经典实例_笔记
笔记·python·机器学习
CHANG_THE_WORLD7 分钟前
深入理解指向数组的指针以及寻址运算
c语言·开发语言
星火开发设计8 分钟前
序列式容器:list 双向链表的特性与用法
开发语言·前端·数据结构·数据库·c++·链表·list
洛_尘9 分钟前
测试6:自动化测试--概念篇(JAVA)
java·开发语言·测试
wjs202413 分钟前
Lua 字符串处理详解
开发语言
yq19820430115621 分钟前
基于Python爬虫原理的Pinterest视频资源获取技术解析与工具实践
爬虫·python·django·音视频
喵手26 分钟前
Python爬虫实战:自动化质量护航 - 构建爬虫数据的“熔断与巡检”规则引擎实战!
爬虫·python·自动化·爬虫实战·零基础python爬虫教学·自动化质量护航·数据熔断
一切尽在,你来29 分钟前
AI大模型应用开发前置知识:Python 异步编程
python·ai编程
一切尽在,你来35 分钟前
LangGraph 概览
人工智能·python·langchain·ai编程
航哥的女人36 分钟前
最小可运行示例(C++ TCP回显)
开发语言·c++·tcp/ip