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

相关推荐
寒山-居士几秒前
量化客户端核心业务解析
python·金融
ths5123 分钟前
测试开发python中正则表达式使用总结(二)
开发语言·python·算法
色空大师3 分钟前
【java打包方式详解】
java·开发语言·部署·打包·启动脚本·jar包分离
人道领域3 分钟前
2026年Java后端热点全景解析:从LTS革新到云原生跃迁
java·开发语言
heimeiyingwang4 分钟前
【架构实战】API接口防刷与限流策略
开发语言·python·架构
188号安全攻城狮5 分钟前
【前端基础知识】JavaScript 数组方法总结:从表格速查到分类详解
开发语言·前端·javascript·网络安全
不爱吃炸鸡柳6 分钟前
5道经典贪心算法题详解:从入门到进阶
开发语言·数据结构·c++·算法·贪心算法
xyq202415 分钟前
Java 变量命名规则
开发语言
天启HTTP16 分钟前
HTTP代理和隧道代理的底层区别与适用场景分析
开发语言·网络协议·tcp/ip·php
小白学大数据17 分钟前
告别复杂 XPath:DeepSeek+Python 爬虫快速实践
开发语言·爬虫·python·selenium