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

相关推荐
m0_596406374 分钟前
mysql如何配置审计日志输出_mysql audit_log_format设置
jvm·数据库·python
Fate_I_C7 分钟前
Kotlin函数一
android·开发语言·kotlin
Eiceblue9 分钟前
C# 实现 XLS 与 XLSX 格式双向互转(无需依赖 Office)
开发语言·c#·visual studio
2301_8166602114 分钟前
Bootstrap框架的最小宽度限制是多少
jvm·数据库·python
水木流年追梦29 分钟前
CodeTop Top 300 热门题目2-最长回文子串
开发语言·人工智能·python·算法·leetcode
狗都不学爬虫_30 分钟前
小程序逆向 - Hai尔(AliV3拖动物品)
javascript·爬虫·python·网络爬虫
abc123456sdggfd40 分钟前
HTML5中Vuex持久化插件中WebStorage的底层配置
jvm·数据库·python
良木生香40 分钟前
【C++初阶】:STL——String从入门到应用完全指南(3)
c语言·开发语言·数据结构·c++·算法
小龙Guo41 分钟前
Yolo 多任务推理,摄像头+视频实时推理,实现关键点、分割、检测等模型推理部署
python·yolo·关键点检测·模型推理
pele42 分钟前
Go语言如何发GET请求_Go语言HTTP GET请求教程【总结】
jvm·数据库·python